• log4j使用


     Spring中在src/main/resources下创建log4j.xml 或log4j.properties,在maven下打包时resources文件夹下面的文件会自动copy到WEB-INF/classes目录下。

    使用方法:在项目中的classes 中新建立一个log4j.properties文件即可;(Spring中的log4j.xml放到resources下面即可maven在打包时会自动把resources下面的文件coy到classes目录)

    在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对Logger、Appender及Layout的分别使用。Log4j支持两种配置文件格式,一种是XML格式的文件,一种是java properties(key=value)【Java特性文件(键=值)】。

    (发现在

    最简洁的配置:

    log4j.rootLogger=debug,STDOUT
    
    log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
    log4j.appender.STDOUT.layout=org.apache.log4j.SimpleLayout

    上面3个缺一不可。

    输出样式:

     DEBUG - This is debug message.

      INFO - This is info message.

      ERROR - This is error message.

    1、配置根Logger

            其语法为:
            log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
            level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。appenderName:就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地
           例如:log4j.rootLogger=info,A1,B2,C3

    2、配置日志信息输出目的地

            其语法为:
            log4j.appender.appenderName = fully.qualified.name.of.appender.class    //
            "fully.qualified.name.of.appender.class" 可以指定下面五个目的地中的一个:

                1.org.apache.log4j.ConsoleAppender(控制台)
                2.org.apache.log4j.FileAppender(文件)
                3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
                4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
                5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

                   1.ConsoleAppender选项
                          Threshold=WARN:指定日志消息的输出最低层次。
                          ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
                          Target=System.err:默认情况下是:System.out,指定输出控制台
                    2.FileAppender 选项
                          Threshold=WARN:指定日志消息的输出最低层次。
                          ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
                          File=mylog.txt:指定消息输出到mylog.txt文件。
                          Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
                  3.DailyRollingFileAppender 选项
                          Threshold=WARN:指定日志消息的输出最低层次。
                          ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
                          File=mylog.txt:指定消息输出到mylog.txt文件。
                          Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
                          DatePattern=''.''yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
                          1)''.''yyyy-MM: 每月
                          2)''.''yyyy-ww: 每周 
                          3)''.''yyyy-MM-dd: 每天
                          4)''.''yyyy-MM-dd-a: 每天两次
                          5)''.''yyyy-MM-dd-HH: 每小时
                          6)''.''yyyy-MM-dd-HH-mm: 每分钟
                  4.RollingFileAppender 选项
                          Threshold=WARN:指定日志消息的输出最低层次。
                          ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
                          File=mylog.txt:指定消息输出到mylog.txt文件。
                          Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
                          MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
                          MaxBackupIndex=2:指定可以产生的滚动文件的最大数。

    3、配置日志信息的格式

              其语法为:
      1). log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
                    "fully.qualified.name.of.layout.class" 可以指定下面4个格式中的一个:
                     1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
               2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
               3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
               4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
                         1.HTMLLayout 选项
                            LocationInfo=true:默认值是false,输出java文件名称和行号
                            Title=my app file: 默认值是 Log4J Log Messages.
                         2.PatternLayout 选项
                            ConversionPattern=%m%n :指定怎样格式化指定的消息。
                         3.XMLLayout    选项
                            LocationInfo=true:默认值是false,输出java文件和行号
              2). log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
                 这里需要说明的就是日志信息格式中几个符号所代表的含义:
                 -X号: X信息输出时左对齐;
                         %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
                         %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
                         %r: 输出自应用启动到输出该log信息耗费的毫秒数
                         %c: 输出日志信息所属的类目,通常就是所在类的全名
                         %t: 输出产生该日志事件的线程名
                         %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
                         %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
                         %%: 输出一个"%"字符
                         %F: 输出日志消息产生时所在的文件名称
                         %L: 输出代码中的行号
                         %m: 输出代码中指定的消息,产生的日志具体信息
                         %n: 输出一个回车换行符,Windows平台为"
    ",Unix平台为"
    "输出日志信息换行
                  可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
                           1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
                           2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
                           3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
                           4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉

    例子:


    log4j.rootLogger=info,STDOUT

    log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender

    log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
    log4j.appender.STDOUT.layout.ConversionPattern=[%p %d{yyyy-MM-dd HH:mm:ss}] [%t] %c{1}.%M(%L) | %m%n

    输出形式如;

    [INFO 2016-03-23 20:06:30] [startQuartz_Worker-2] My.work(17) | yes

    INFO   日期          线程名       类名.方法名(行号) 日志信息 换行

    使用方法:

    import org.apache.log4j.Logger;

    public class A{

      private static Logger log = Logger.getLogger(A.class); 

      public void work()

      {

         log.debug("a");

        ....

    }

    引入logger,在类中生成静态实例,调用  info debug error……方法。

      

  • 相关阅读:
    java-实现两种排序方法
    暑假,一遍一遍敲代码吧!
    java学习-如何定义一个函数及其简单练习
    关于函数重载的理解
    java学习中关于函数的练习
    在校大三学生,真心想学好计算机。可是,,,,没有目标,。。。。。。
    伪分布式网络爬虫框架的设计与自定义实现(一)
    网站架构成长路程之 箴言
    使用asp.net mvc + entityframework + sqlServer 搭建一个简单的code first项目
    使用visualStudio2017创建一个简单的控制台程序
  • 原文地址:https://www.cnblogs.com/youxin/p/5312871.html
Copyright © 2020-2023  润新知