`
huiqinbo
  • 浏览: 341500 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java 日志记录 log4j 最简明教程

 
阅读更多
  1. 最近在搞一个项目架设,希望从构建一个项目方方面面都彻底研究透,增长实战经验。   
  2. 今天先研究一下日志的构建,这里选择了log4j--java方面比较流行的log框架,功能   
  3. 很强大,使用起来也很方便了   
  4.   
  5.       废话少说,先看看一个史上最简单的log例子,看看我是如何用最简洁的设计实现将异常   
  6. 等信息写入日志文件的。   
  7.   
  8. 项目文件结构   
  9. --------TestLog   
  10.            |----src   
  11.            |     |-com/janeky/log/Log.java   
  12.            |     |-log4j.properties   
  13.            |----bin   
  14.            |     |-com/janeky/log/Log   
  15.            |----lib   
  16.            |     |-log4j-1.2.11.jar   
  17.   
  18.   
  19. Eclipse新建一个java project TestLog   
  20. 新建一个com.janeky.log包   
  21. 导入log4j的jar包   
  22. 包里新建一个Log.java   
  23.   
  24. view plaincopy to clipboardprint?   
  25. package com.janeky.log;     
  26. import org.apache.log4j.Logger;     
  27. import org.apache.log4j.PropertyConfigurator;     
  28.     
  29. /**   
  30. * @author janeky   
  31. * Log演示程序   
  32. */    
  33. public class Log {     
  34.     //Logger实例     
  35.     private Logger loger;     
  36.     //将Log类封装成单实例的模式,独立于其他类。以后要用到日志的地方只要获得Log的实例就可以方便使用     
  37.     private static Log log;     
  38.     //构造函数,用于初始化Logger配置需要的属性     
  39.     private Log()     
  40.     {     
  41.         //获得当前目录路径     
  42.         String filePath=this.getClass().getResource("/").getPath();     
  43.         //找到log4j.properties配置文件所在的目录(已经创建好)     
  44.         filePath=filePath.substring(1).replace("bin""src");     
  45.         //获得日志类loger的实例     
  46.         loger=Logger.getLogger(this.getClass());     
  47.         //loger所需的配置文件路径     
  48.         PropertyConfigurator.configure(filePath+"log4j.properties");     
  49.     }     
  50.          
  51.     static Log getLoger()     
  52.     {     
  53.         if(log!=null)     
  54.             return log;     
  55.         else    
  56.             return new Log();     
  57.     }     
  58.          
  59.     //测试函数     
  60.     public static void main(String args[])     
  61.     {     
  62.         Log log=Log.getLoger();     
  63.         try    
  64.         {     
  65.             //引发异常     
  66.             int a=2/0;     
  67.         }catch(Exception e)     
  68.         {     
  69.             //控制台打印异常信息     
  70.             e.printStackTrace();     
  71.             //写入到日子文件     
  72.             log.loger.error("error", e);     
  73.                  
  74.         }     
  75.     }     
  76.     
  77. }    
  78. package com.janeky.log;   
  79. import org.apache.log4j.Logger;   
  80. import org.apache.log4j.PropertyConfigurator;   
  81.   
  82. /**  
  83. * @author janeky  
  84. * Log演示程序  
  85. */  
  86. public class Log {   
  87. //Logger实例   
  88. private Logger loger;   
  89. //将Log类封装成单实例的模式,独立于其他类。以后要用到日志的地方只要获得Log的实例就可以方便使用   
  90. private static Log log;   
  91. //构造函数,用于初始化Logger配置需要的属性   
  92. private Log()   
  93. {   
  94. //获得当前目录路径   
  95. String filePath=this.getClass().getResource("/").getPath();   
  96. //找到log4j.properties配置文件所在的目录(已经创建好)   
  97. filePath=filePath.substring(1).replace("bin""src");   
  98. //获得日志类loger的实例   
  99. loger=Logger.getLogger(this.getClass());   
  100. //loger所需的配置文件路径   
  101. PropertyConfigurator.configure(filePath+"log4j.properties");   
  102. }   
  103.   
  104. static Log getLoger()   
  105. {   
  106. if(log!=null)   
  107. return log;   
  108. else  
  109. return new Log();   
  110. }   
  111.   
  112. //测试函数   
  113. public static void main(String args[])   
  114. {   
  115. Log log=Log.getLoger();   
  116. try  
  117. {   
  118. //引发异常   
  119. int a=2/0;   
  120. }catch(Exception e)   
  121. {   
  122. //控制台打印异常信息   
  123. e.printStackTrace();   
  124. //写入到日子文件   
  125. log.loger.error("error", e);   
  126.   
  127. }   
  128. }   
  129.   
  130. }   
  131.   
  132.   
  133. 在src文件夹中新建一个文本文档 log4j.properties   
  134.   
  135. view plaincopy to clipboardprint?   
  136. #定义DEBUG优先级,R为日志输出目的的     
  137. log4j.rootLogger=DEBUG, R     
  138. #设置日志输出类型,为文件类型     
  139. log4j.appender.R=org.apache.log4j.FileAppender     
  140. #设置日志文件名my.log     
  141. log4j.appender.R.file=my.log     
  142. #每次在文件尾写入新的日志信息     
  143. log4j.appender.R.Append=true    
  144. #日志输出信息格式类型     
  145. log4j.appender.R.layout=org.apache.log4j.PatternLayout     
  146. #日志输出信息格式为 换行、换行、日期、优先级、[类名]、日志信息、换行     
  147. log4j.appender.R.layout.ConversionPattern=%n%n%d%p[%c]-%m%n    
  148. #定义DEBUG优先级,R为日志输出目的的   
  149. log4j.rootLogger=DEBUG, R   
  150. #设置日志输出类型,为文件类型   
  151. log4j.appender.R=org.apache.log4j.FileAppender   
  152. #设置日志文件名my.log   
  153. log4j.appender.R.file=my.log   
  154. #每次在文件尾写入新的日志信息   
  155. log4j.appender.R.Append=true  
  156. #日志输出信息格式类型   
  157. log4j.appender.R.layout=org.apache.log4j.PatternLayout   
  158. #日志输出信息格式为 换行、换行、日期、优先级、[类名]、日志信息、换行   
  159. log4j.appender.R.layout.ConversionPattern=%n%n%d%p[%c]-%m%n   
  160.   
  161. 运行吧,出错了,恭喜你成功了,去TestLog目录下寻找my.log日志信息吧   
  162.   
  163.   
  164. 以后再任何需要记录日志的地方只要使用下面语句就行了   
  165. Log log= Log.getLogger();   
  166. log.logger.error("something u like to record");   
  167.   
  168. 记录日志就是这么简单,不过你可以有其他的需要:   
  169.   
  170. 我要将日志发到邮箱   
  171. 我要将日志写到数据库   
  172. 我要每天的日志自动归档   
  173. ……   
  174.   
  175. 这些都可以通过修改配置log4j.properties配置文件来实现   
  176. 以下是配置文件的语法   
  177.   
  178.   
  179. 1. log4j.rootLogger = [level],appenderName,appenderName...   
  180. 其中,level是日志记录的优先级,从高到低分别为FATAL ERROR WARN INFO DEBUG 。当   
  181. 你定义一个级别,只有等于或者高于这个基本的才进行处理。 可选的All打印所有日志,OFF   
  182. 关闭所有日志输出。   
  183. appenderName用于指定日志信息输出目的地,可以指定多个   
  184.   
  185. 2.配置appender   
  186.   
  187. 类型有以下几种   
  188. org.apache.log4j.jdbc.JDBCAppender 存入数据库   
  189. org.apache.log4j.net.SMTPAppender  发送到指定邮箱   
  190. net.cybercorlin.util.logger.appender.IMAppender 自定义类型   
  191. org.apache.log4j.ConsoleAppender 控制台   
  192. org.apache.log4j.FileAppender 文件   
  193. org.apache.log4j.DailyRollingFileAppender 每天产生一个日志文件   
  194. org.apache.log4j.RollingFileAppender 文件达到指定大小的时候产生一个新的文件   
  195. org.apache.log4j.WriterAppender 将日志信息以流格式发送到任意指定的地方   
  196. *************可以参照文章后面从网上摘抄的例子************   
  197.   
  198. 3.配置日志信息格式Layout   
  199. 有以下几种   
  200. org.apache.log4j.HTMLLayout HTML表格形式   
  201. org.apache.log4j.PatternLayout 自定义的布局(下面将见到这么自定义配置)   
  202. org.apache.log4j.SimpleLayout 只包含日志信息基本和信息的字符信息   
  203. org.apache.log4j.TTCCLayout   包括日志产生时间、线程、类别等信息   
  204.   
  205. 4.自定义的布局中用到的格式化日志信息   
  206. 采用跟C语言中printf的方式,参数有   
  207. %m 输出代码中指定的信息 如 log.error("error")   
  208. %p 输出优先级 就是上面提到的DEBUG,INFO等   
  209. %c 输出所在类的全名   
  210. %r 输出自应用启用到输出该log信息耗费的时间(毫秒)   
  211. %t 输出产生该日子事件的线程名   
  212. %n 输出换行符号 Windows平台为 "rn",unix平台“n"   
  213. %d 输出日志时间点 默认格式是ISO8601 可以自定义格式,比如%d{yyy MM dd hh:mm:ss,sss}   
  214.   
  215. 在程序中使用log4j   
  216. 记住,很简单,就两步骤,相信我,没错的:)   
  217.   
  218.   
  219. 1.导入包   
  220. import org.apache.log4j.Logger;   
  221. import org.apache.log4j.PropertyConfigurator;   
  222.   
  223.   
  224. 2.获取log实例   
  225. Logger logger = Logger.getLogger   
  226.   
  227.   
  228. 3配置log4j.properties   
  229. PropertyConfigurator.configure(log4j2.properties路径);   
  230.   
  231. 就这些了,没了,谢谢观看,有什么意见尽管说   
  232.   
  233. ********************从网上摘抄的一些配置实例*********************   
  234. http://hi.baidu.com/yitao/blog/item/7e6a0bd1740ce1d2562c8410.html   
  235.   
  236.       log4j.rootLogger=DEBUG,CONSOLE,A1,im   
  237.       #DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE   
  238.       log4j.addivity.org.apache=true  
  239.       
  240.       ###################   
  241.       # Console Appender   
  242.       ###################   
  243.       log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender   
  244.       log4j.appender.Threshold=DEBUG   
  245.       log4j.appender.CONSOLE.Target=System.out   
  246.       log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout   
  247.       log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n   
  248.       #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n   
  249.       
  250.       #####################   
  251.       # File Appender   
  252.       #####################   
  253.       log4j.appender.FILE=org.apache.log4j.FileAppender   
  254.       log4j.appender.FILE.File=file.log   
  255.       log4j.appender.FILE.Append=false  
  256.       log4j.appender.FILE.layout=org.apache.log4j.PatternLayout   
  257.       log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n   
  258.       # Use this layout for LogFactor 5 analysis   
  259.       
  260.       ########################   
  261.       # Rolling File   
  262.       ########################   
  263.       log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender   
  264.       log4j.appender.ROLLING_FILE.Threshold=ERROR   
  265.       log4j.appender.ROLLING_FILE.File=rolling.log   
  266.       log4j.appender.ROLLING_FILE.Append=true  
  267.       log4j.appender.ROLLING_FILE.MaxFileSize=10KB   
  268.       log4j.appender.ROLLING_FILE.MaxBackupIndex=1  
  269.       log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout   
  270.       log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n   
  271.       
  272.       ####################   
  273.       # Socket Appender   
  274.       ####################   
  275.       log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender   
  276.       log4j.appender.SOCKET.RemoteHost=localhost   
  277.       log4j.appender.SOCKET.Port=5001  
  278.       log4j.appender.SOCKET.LocationInfo=true  
  279.       # Set up for Log Facter 5  
  280.       log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout   
  281.       log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n   
  282.       
  283.       ########################   
  284.       # Log Factor 5 Appender   
  285.       ########################   
  286.       log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender   
  287.       log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000  
  288.       
  289.       ########################   
  290.       # SMTP Appender   
  291.       #######################   
  292.       log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender   
  293.       log4j.appender.MAIL.Threshold=FATAL   
  294.       log4j.appender.MAIL.BufferSize=10  
  295.       log4j.appender.MAIL.From=chenyl@hollycrm.com   
  296.       log4j.appender.MAIL.SMTPHost=mail.hollycrm.com   
  297.       log4j.appender.MAIL.Subject=Log4J Message   
  298.       log4j.appender.MAIL.To=chenyl@hollycrm.com   
  299.       log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout   
  300.       log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n   
  301.       
  302.       ########################   
  303.       # JDBC Appender   
  304.       #######################   
  305.       log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender   
  306.       log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test   
  307.       log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver   
  308.       log4j.appender.DATABASE.user=root   
  309.       log4j.appender.DATABASE.password=   
  310.       log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')   
  311.       log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout   
  312.       log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n   
  313.       
  314.       log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender   
  315.       log4j.appender.A1.File=SampleMessages.log4j   
  316.       log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'  
  317.       log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout   
  318.       ###################   
  319.       #自定义Appender   
  320.       ###################   
  321.       log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender   
  322.       log4j.appender.im.host = mail.cybercorlin.net   
  323.       log4j.appender.im.username = username   
  324.       log4j.appender.im.password = password   
  325.       log4j.appender.im.recipient = corlin@cybercorlin.net   
  326.       log4j.appender.im.layout=org.apache.log4j.PatternLayout   
  327.       log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n   
  328.       
  329.       log4j.properties配置文件讲解如下:   
  330.       # Set root logger level to DEBUG and its only appender to A1   
  331.       #log4j中有五级logger   
  332.       #FATAL 0  
  333.       #ERROR 3  
  334.       #WARN 4  
  335.       #INFO 6  
  336.       #DEBUG 7  
  337.       配置根Logger,其语法为:   
  338.       #log4j.rootLogger = [ level ] , appenderName, appenderName, …   
  339.       log4j.rootLogger=INFO, A1 ,R   
  340.       #这一句设置以为着所有的log都输出   
  341.       #如果为log4j.rootLogger=WARN, 则意味着只有WARN,ERROR,FATAL   
  342.       #被输出,DEBUG,INFO将被屏蔽掉.   
  343.       # A1 is set to be a ConsoleAppender.   
  344.       #log4j中Appender有几层如控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等   
  345.       #ConsoleAppender输出到控制台   
  346.       log4j.appender.A1=org.apache.log4j.ConsoleAppender   
  347.       # A1 使用的输出布局,其中log4j提供4种布局.   
  348.   
  349.       #org.apache.log4j.HTMLLayout(以HTML表格形式布局)   
  350.       #org.apache.log4j.PatternLayout(可以灵活地指定布局模式),   
  351.       #org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),   
  352.       #org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)   
  353.       log4j.appender.A1.layout=org.apache.log4j.PatternLayout   
  354.       #灵活定义输出格式 具体查看log4j javadoc org.apache.log4j.PatternLayout   
  355.       #d 时间 ....   
  356.       log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n   
  357.       #R 输出到文件 RollingFileAppender的扩展,可以提供一种日志的备份功能。   
  358.       log4j.appender.R=org.apache.log4j.RollingFileAppender   
  359.       #日志文件的名称   
  360.       log4j.appender.R.File=log4j.log   
  361.       #日志文件的大小   
  362.       log4j.appender.R.MaxFileSize=100KB   
  363.       # 保存一个备份文件   
  364.       log4j.appender.R.MaxBackupIndex=1  
  365.   
  366.       log4j.appender.R.layout=org.apache.log4j.TTCCLayout   
  367.       #log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n   
  368.       
  369.       配置根Logger,其语法为:   
  370.       log4j.rootLogger = [ level ] , appenderName, appenderName, ...   
  371.       level 是日志记录的优先级   
  372.       appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。   
  373.       配置日志信息输出目的地Appender,其语法为   
  374.       
  375.       log4j.appender.appenderName = fully.qualified.name.of.appender.class  
  376.       log4j.appender.appenderName.option1 = value1   
  377.       ...   
  378.       log4j.appender.appenderName.option = valueN   
  379.       Log4j提供的appender有以下几种:   
  380.       org.apache.log4j.ConsoleAppender(控制台),   
  381.       org.apache.log4j.FileAppender(文件),   
  382.       org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),   
  383.       org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),   
  384.       org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)   
  385.       配置日志信息的格式(布局),其语法为:   
  386.       
  387.       log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class  
  388.       log4j.appender.appenderName.layout.option1 = value1   
  389.       ....   
  390.       log4j.appender.appenderName.layout.option = valueN   
  391.       Log4j提供的layout有以下几种:   
  392.       org.apache.log4j.HTMLLayout(以HTML表格形式布局),   
  393.       org.apache.log4j.PatternLayout(可以灵活地指定布局模式),   
  394.       org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),   
  395.       org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)   
  396.        
  397.   
  398.   
  399. 简化spring中的事务管理配置   
  400.       xml代码:   
  401.       <bean id="proxyService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">   
  402.       <property name="transactionManager"><ref local="myTransactionManager"/></property>   
  403.       <property name="target">   
  404.       <ref local="itemService"/>   
  405.       </property>   
  406.       <property name="transactionAttributes">   
  407.       <props>   
  408.       <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>   
  409.       <prop key="add*">PROPAGATION_REQUIRED</prop>   
  410.       <prop key="update*">PROPAGATION_REQUIRED</prop>   
  411.       <prop key="delete*">PROPAGATION_REQUIRED</prop>   
  412.       <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>   
  413.       </props>   
  414.       </property>   
  415.       </bean>   
  416.       <bean id="itemService" class="com.xxx.services.IServiceImpl">   
  417.       <property name="itemMasterDAO"><ref local="itemMasterDAO"/></property>   
  418.       </bean>   
  419.       
  420.       系统中有多个service,但我们的事务策略大部分都是一样的,难道非要每个service都要写一个这样的代理配置么?当然不是..   
  421.       看下面代码:   
  422.       xml代码:   
  423.       
  424.       <!-- Transactional proxy for the services -->   
  425.       <bean id="baseTxProxy" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">   
  426.       <property name="transactionManager"><ref bean="transactionManager"/></property>   
  427.       <property name="transactionAttributes">   
  428.       <props>   
  429.       <prop key="*">PROPAGATION_REQUIRED</prop>   
  430.       </props>   
  431.       </property>   
  432.       </bean>   
  433.       <bean id="itemService" parent="baseTxProxy">   
  434.       <property name="target">   
  435.       <bean class="ItemServiceImpl" autowire="byName"/>   
  436.       </property>   
  437.       </bean>  
分享到:
评论

相关推荐

    日志管理--Log4J简明教程

    Log4J是Apache的一个开源项目,它为Java应用程序提供了一个强大的日志框架。Log4J的设计目标是提供一个灵活的日志系统,使开发者能够轻松地控制日志信息的输出方式、输出位置以及输出级别。其核心组件主要包括Logger...

    log4j的项目,简明实例

    Log4j是Apache组织提供的一款开源日志记录框架,它在Java应用程序中被广泛使用,用于记录程序运行过程中的各种信息,包括错误、警告、调试信息等。Log4j的设计目标是提供一个灵活且高效的日志系统,让开发者能够方便...

    ORACLE_11g教程_数据库应用简明教程

    ### ORACLE 11g 教程:数据库应用简明教程知识点详解 #### 一、数据库存储结构 ##### 物理存储结构与逻辑存储结构 - **物理存储结构**:指数据库在磁盘上的实际组织方式,主要包括数据文件、控制文件、重做日志...

    ORACLE-11g教程-数据库应用简明教程.doc

    LGWR(Log Writer)进程负责将日志缓冲区的内容写入日志文件,保证事务的持久性。当数据库运行在归档模式下,ARCn进程会将日志内容复制到归档日志文件,以备后续恢复使用。PMON(Process Monitor)进程则监控并清理...

    ORACLE11g教程数据库应用简明教程.pdf

    - 包含数据缓冲区(Data Buffer Cache)、日志缓冲区(Log Buffer)、共享池(Shared Pool)、Java池(Java Pool)和大型池(Large Pool)等区域。数据缓冲区存储了最近访问的数据,日志缓冲区暂存待写入的日志信息...

    jboss配置方法简明教程

    JBoss配置方法简明教程中涵盖了JBoss应用服务器的安装、配置以及遇到常见问题的解决方法。主要内容包括JDK环境变量设置、JBoss安装、端口修改、日志文件配置等,现将这些知识点详细展开。 JDK环境变量设置:当安装...

    26个编程必备API(中文)

    8. **Log4j1.2**:Log4j是Java日志记录的开源工具,它的API文档解释了如何配置和使用日志系统,便于进行调试和问题追踪。 9. **Struts2_zh**:Struts2是一个基于MVC模式的Java Web框架,其API文档涵盖了Action、...

    xdoclet_appfuse打包

    8. "log4j简明使用文档.doc":Log4j是Java日志框架,这个文档提供了关于如何配置和使用Log4j的日志记录功能。 9. "appfuse.txt"和"5.txt":这两个可能是额外的文本文件,可能包含了开发者笔记、命令行脚本或其他...

    用MYELIPSE6.0做oOJSP的SSH简明视频例子(要领)

    ### 四、调试与日志记录 #### 1. 日志配置 为了便于跟踪问题和定位错误,可以在项目中引入日志框架(如Log4j)。通过在Tomcat的logs目录下创建log4j.properties文件来配置日志级别和输出方式。 #### 2. 错误处理 ...

Global site tag (gtag.js) - Google Analytics