log4j详解

==一、log4j配置文件简介==
 Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL,
 分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。
 官方网址:http://logging.apache.org/log4j/1.2/manual.html       
    其他: http://zhangxiang390.iteye.com/blog/258455
          http://baike.baidu.com/link?url=Bb01jbHyL4vguFz31zkPVJSmtEGWYy186veLBi8MX33N5IL-uVsIEYFpL47TduKn
        
===1.日志信息的优先级===
 Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。
 如在这里定义了INFO级别,则应用程序中所有低于INFO级别的日志信息将不被打印出来。
 通过在配置中修改Appender的Threshold即能实现,比如下面的例子:<param name="threshold" value="info"/> # 输出info级别以上的日志.

===2.日志信息的输出目的地===
 Log4j允许日志请求被输出到多个输出源。用Log4j的话说,一个输出源被称做一个Appender。
 ConsoleAppender:将log信息将写到Console
 FileAppender:将log信息将写到指定的文件中
 DailyRollingAppender:使用FileAppender可以将log信息输出到文件中,但是如果文件太大了读起来就不方便了。这时就可以使用  DailyRollingAppender。
                          DailyRollingAppender可以把Log信息输出到按照日期来区分的文件中。配置文件就会每天(时间可以设定)产生一个log文件,
                          每个log文件只记录当天的log信息
 RollingFileAppender:文件大小到达指定尺寸的时候产生一个新的文件。

===3.日志信息输出的格式===
====(1)布局样式====
  布局样式,通过设定<layout>节点的class值:
       1.org.apache.log4j.HTMLLayout(以HTML表格形式布局), 
        2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式), 
        3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), 
        4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

====(2)格式====
  日志内容的格式,通过设定<param>节点的value值为以下标志的组合:
        1.%m 输出代码中指定的消息 
        2.%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
       3.%r 输出自应用启动到输出该log信息耗费的毫秒数 
        4.%c 输出所属的类目,通常就是所在类的全名 
        5.%t 输出产生该日志事件的线程名 
        6.%n 输出一个回车换行符,Windows平台为"rn",Unix平台为"n" 
       7.%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002
            年10月18日 22:10:28,921 
       8.%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(Test Log4.java:10)

==二、结合作业中的log4j配置文件实例进行讲解==
===1.配置文件和输出日志位置===
 配置文件:ROR安装目录\RCXCFMG\config 目录下的vsys_log4j.xml文件中,监察日志(Audit Log)相关配置信息
 输出日志:ROR安装目录\RCXCFMG\logs 目录下的vsys_audit_log文件

===2.配置文件内容及详解===
  '''<appender''' name="auditfileout" class="org.apache.log4j.RollingFileAppender"> 
                           # '''指定了输出源auditfileout,Appender类型为:RollingFileAppender'''
                     <param name="threshold" value="info"/>
                           # '''指定输出info级别以上的日志'''                       
                        <param name="MaxFileSize" value="10MB" />
                           # '''指定最大的文件是10MB,当一个日志文件达到最大尺寸时,Log4J会自动把vsys_audit_log重命名为vsys_audit_log.1,然后重建一个新
                                ''' 的vsys_audit_log文件,依次轮转。'''''
                        <param name="MaxBackupIndex" value="9" />
                     <param name="File" value="C:/Program Files (x86)/Resource Orchestrator/RCXCFMG/logs/vsys_audit_log" />
                           # '''指定了log的输出位置和log文件名'''
                        <param name="append" value="true" /> 
                           # '''设置是否在重新启动服务时,在原有日志的基础添加新日志'''
                        <param name="Encoding" value="UTF-8" />
                           # '''指定日志信息输出时的编码方式'''
                        <layout class="org.apache.log4j.PatternLayout"> 
                           # '''log内容布局和格式'''
                             <param name="ConversionPattern" value="%m %n" />
                           # '''输出代码中指定的消息,换行输出'''
                        </layout>
  '''</appender>''' 
  <'''category''' name="com.fujitsu.sop.vsys.common.log.AuditLogger" additivity="false"> 
                           # '''通过<category></category>的定义可以将各个包中的类日志输出到不同的日志文件中。'''
                                 '''默认情况下 子Logger 会继承 父Logger 的appender,也就是说 子Logger 会在 父Logger 的appender里输出。'''
                                 '''若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。'''
                        <priority value="info" />
                           # '''category中的优先级设定,如果appender中又设定了优先级,最终输出的日志信息以appender中与category中优先级最高的为准'''
                                '''例如此处value="info",appender中 <param name="threshold" value="trace"/>,则输出info级别以上的日志信息'''
                        <appender-ref ref="auditfileout" /> 
                           # '''指定class“com.fujitsu.sop.vsys.common.log.AuditLogger”中的日志使用appender名为“auditfileout”的配置输出日志''' 
  </'''category'''>

==三、作业中的log4j日志乱码解决==
 在<appender>中添加配置“<param name="Encoding" value="程序里的日志信息输出时的编码方式(UTF-8/GB2312等)" />”,
 将输出的日志文件内容编码格式指定为和“程序里的日志信息输出时的编码方式”一致即可,但须确保打印log时,需打印的信息不是乱码;
 若需打印的信息在打印之前已为乱码,日志文件中输出仍为乱码。


==三、vsys组中文化对应作业中的log4j日志乱码解决==
 在<appender>中添加配置“<param name="Encoding" value="程序里的日志信息输出时的编码方式(UTF-8/GB2312等)" />”,
 将输出的日志文件内容编码格式指定为和“程序里的日志信息输出时的编码方式”一致即可,但须确保打印log时,需打印的信息不是乱码;
 若需打印的信息在打印之前已为乱码,日志文件中输出仍为乱码。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring是一个开源的Java应用框架,它提供了一种配置方式可以帮助我们在应用中使用log4j进行日志记录。log4j是一个广泛应用的Java日志工具,它能够帮助我们在代码中输出日志信息。 在Spring的配置文件中,我们可以使用<logging:configurer>元素来配置log4j。这个元素可以帮助我们加载log4j的配置文件,并将日志输出到指定的目标。 首先,我们需要在Spring的配置文件中引入命名空间<xmlns:logging="http://www.springframework.org/schema/logging">。然后,我们可以在<beans>元素中使用<logging:configurer>元素来配置log4j。 在<logging:configurer>元素中,我们可以设置以下属性来配置log4j: - level:指定日志记录的级别,如DEBUG、INFO、WARN、ERROR等。 - location:指定log4j的配置文件位置。 - watch:指定是否在配置文件发生变化时自动重新加载log4j的配置。 除了配置文件中的元素,我们还可以在代码中使用注解来配置log4j。通过在类上使用@Log4j注解,我们可以自动使用log4j来记录日志。同时,我们还可以在方法上使用@Log注解来记录方法的执行流程。 总体而言,Spring的配置方式可以帮助我们更加灵活地使用log4j进行日志记录。通过配置文件和注解,我们可以指定日志的级别、输出位置和自动加载,从而更好地满足应用的需求。同时,Spring还提供了一些与日志相关的工具类和接口,帮助我们更加方便地使用log4j。通过合理配置和使用log4j,我们可以更好地监控和调试应用,提高应用的稳定性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值