zoukankan      html  css  js  c++  java
  • Log4j(详解)

    Log4j:

    Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,

    甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;

    通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,

    这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

    <!--日志架包log4j-->
        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
        </dependency>

    优点

    首先 简单 - 安装配置简单方便,只需要架包+编写配置相关的代码

    其次 精确控制 - 可以控制到应用程序中相应级别的日志信息的开关,通过定义每一条日志信息的级别,我们能够更加细致地控制日志信息的打印

    然后 灵活强大 - appender 指定日志输出目的地(例如我们可以输出到控制台、本地文件、数据库等)

    layout 则可以设置输出的格式和指定的输出参数

    扩展性 - 可以自定义Appender 

    扩展 AppenderSkeleton 抽象类。 

    指定您的 appender 是否需要 layout。

    实现 close() 方法。它必须把 closed 字段的值设置为 true 。记得释放所有资源。 

    编写 append() 方法的代码。这个方法负责附加日志记录事件,并在错误发生时负责调用错误处理程序。

     demo

    import org.apache.log4j.AppenderSkeleton;  
    import org.apache.log4j.spi.LoggingEvent;  
      
    public class HelloAppender extends AppenderSkeleton {  
      
        private String account ;  
          
        @Override  
        protected void append(LoggingEvent event) {  
            System.out.println("Hello, " + account + " : "+ event.getMessage());  
        }  
      
        @Override  
        public void close() {  
            // TODO Auto-generated method stub  
      
        }  
      
        @Override  
        public boolean requiresLayout() {  
            // TODO Auto-generated method stub  
            return false;  
        }  
      
        public String getAccount() {  
            return account;  
        }  
      
        public void setAccount(String account) {  
            this.account = account;  
        }  
    }  

    log4j.properties文件配置

    # 全局配置: 只显示错误级别的日志,输出为名字为 stdou 的日志
    log4j.rootLogger=ERROR, stdout
    
    # MyBatis 的日志配置,只输出 com.nf147.bookstore_ssm.dao 包下产生 INFO 以及以上级别的日志
    #TRACEINFO
    log4j.logger.com.gdnf.ssm.dao=TRACE
    
    # 定义名字为 stdout 的日志,将日志输出到控制台
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

    日志输出级别,共有5级:

       FATAL       0  
    ERROR      3  
    WARN       4  
    INFO         6  
    DEBUG      7 

    Appender 为日志输出目的地,Log4j提供的appender有以下几种:

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

    Layout:日志输出格式,Log4j提供的layout有以下几种:

       org.apache.log4j.HTMLLayout(以HTML表格形式布局),
    org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
    org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
    org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息 )

    打印参数: Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:

         %m   输出代码中指定的消息
      %p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
      %r   输出自应用启动到输出该log信息耗费的毫秒数 
      %c   输出所属的类目,通常就是所在类的全名 
      %t   输出产生该日志事件的线程名 
      %n   输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” 
      %d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},

        输出类似:2002年10月18日  22 : 10 : 28 , 921  
      %l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 ) 

    转载此网页 配置log4j

  • 相关阅读:
    7年Java后端被淘汰,一路北漂辛酸史。。。
    vue jqury如何获取元素中的属性
    02-Elenment 引入使用
    01
    vuex 全局store,前后端交互
    五分钟搞懂Vuex
    VueX 的使用
    vue解决前后端跨域问题
    rest_framework/api.html
    Vue中使用markdown
  • 原文地址:https://www.cnblogs.com/dzcici/p/9715125.html
Copyright © 2011-2022 走看看