zoukankan      html  css  js  c++  java
  • log4j 日志配置

    Log4j教程 - Log4j安装

    Log4j API包是根据Apache软件许可证分发的。

    最新的log4j版本,包括全源代码,类文件和文档可以在http://logging.apache.org/log4j/找到。

    我们可以从上面的链接下载apache-log4j-x.x.x.tar.gz或zip文件。

    支持库

    我们可以使用log4j将信息记录到各种目的地,例如发送电子邮件,数据库或文件。

    有一个我们需要放到classpath的库的列表,以便log4j可以拿起它并使用它。

    例如,当从log4j发出电子邮件时,我们需要电子邮件库jar文件。

    库是可选的,并且取决于我们将要与log4j框架一起使用的功能。

    • JavaMail API(mail.jar): 从https://glassfish.dev.java.net/javaee5/mail/用于基于电子邮件的日志记录。

    • JavaBeans Activation Framework(activation.jar): 来自http://java.sun.com/products/javabeans/jaf/index.jsp。

    • Java Message Service: 用于JMS和JNDI。

    • XML Parser(Xerces.jar): 来自http://xerces.apache.org/xerces-j/install.html。

    Maven和Log4j

    首先,使用以下maven命令创建一个空的Maven项目。

    C:mvn_test>mvn archetype:generate -DgroupId=com.w3cschool.ide -DartifactId=MyTest -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    

    然后,转到项目文件夹并找到pom.xml,添加以下依赖关系。

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

    之后,将以下代码添加到在resources文件夹下创建的log4j.properties。

    MyTest
     |
     +-src
        |
        +-main
           |
           +-java
           |  |
           |  +-com
           |    |
           |    +-w3cschool
           |       |
           |       +-ide
           |
           +-resources
              |
              +- log4j.properties         

    如上面的文件夹结构所示,资源位于java文件夹的保存级别。 

    对于Java Web应用程序,将log4j.properties文件存储在WEB-INF/classes目录下 将以下配置保存到log4j.properties文件中。

    # Root logger option
    log4j.rootLogger=DEBUG, stdout, file
     
    # Redirect log messages to console
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
     
    # Redirect log messages to a log file, support file rolling.
    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=C:\log4j.log
    log4j.appender.file.MaxFileSize=5MB
    log4j.appender.file.MaxBackupIndex=10
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

    最后一个%m%n 配置log4j以添加换行符。

    %L设置从记录请求的行号。

    %c{1}引用通过 getLogger()设置的日志记录名称。

    %-5p设置日志记录优先级,如DEBUG或ERROR。

    log4j日志级别配置参数说明:

    #通过根日志记录器指定日志级别及输出源  
    #日志输出的优先级:  debug < info < warn < error < fatal
    #定义根日志记录器的日志级别(info)及输出源的别名(console,myFile)
    #该定义让日志在控制台和文件输出,并且只输出info级别以上的日志
    log4j.rootLogger=info,console,myFile
    
    #######配置输出源console的具体实现为控制台输出#######
    #定义输出源别名console(即根日志记录器定义的输出源)
    #的实现类是ConsoleAppender(控制台输出源)log4j.appender.console=org.apache.log4j.ConsoleAppender 
    #指定日志输出格式的格式转换器为PatternLayout实现类
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    #定义日志输出的具体格式
    log4j.appender.console.layout.ConversionPattern=%d %-5p [%c.%M()] - %m%n 
    
    
    #######配置输出源myFile的具体实现为文件输出#######
    #定义输出源别名myFile(即根日志记录器定义的输出源)
    #的实现类是RollingFileAppender(文件输出源)log4j.appender.myFile=org.apache.log4j.RollingFileAppender
    #定义日志文件的存储路径
    log4j.appender.myFile.File=src/log/logProperties/log4j.log
    #定义日志文件的大小
    log4j.appender.myFile.MaxFileSize=1024kb
    #定义日志文件最多生成几个(从0开始算1个,即此处最多3个文件)
    #超过该大小则会覆盖前面生成的文件
    log4j.appender.myFile.MaxBackupIndex=2
    #指定日志输出格式的格式转换器为PatternLayout实现类
    log4j.appender.myFile.layout=org.apache.log4j.PatternLayout
    #定义日志输出的具体格式
    log4j.appender.console.layout.ConversionPattern=%d %-5p [%c.%M()] - %m%n 
     
    #######输出格式解释#######
    #%d: 日志打印的时间点,默认格式为ISO8601,也可以另外指定格式,
             #定义如下:  %d{yyy年MM月dd日 HH时mm分ss秒SSS},则会输出:
             #2018年01月06日 14时47分45秒590
    #%p: 输出日志级别,即DEBUG,INFO,WARN,ERROR,FATAL
             #%-5p:表示字符小于5位,则字符居左(不加“-”号则字符居右),你可以举一反三
    #%c: 日志所在类的全名
    #%M: 日志所在方法的名字
    #%m: 日志信息
    #%n: 输出一个回车换行符
    #%L: 输出代码中的行号

    最后添加以下代码App.java并运行应用程序。

    package com.w3cschool.ide;
     
    import org.apache.log4j.Logger;
     
    public class App{
     
      final static Logger logger = Logger.getLogger(App.class);
     
      public static void main(String[] args) {
     
        App obj = new App();
        obj.runMe("w3cschool");
     
      }
     
      private void runMe(String parameter){
     
        if(logger.isDebugEnabled()){
          logger.debug("This is debug : " + parameter);
        }
     
        if(logger.isInfoEnabled()){
          logger.info("This is info : " + parameter);
        }
     
        logger.warn("This is warn : " + parameter);
        logger.error("This is error : " + parameter);
        logger.fatal("This is fatal : " + parameter);
     
      }
     
    }

    以下代码显示如何记录异常。

    import org.apache.log4j.Logger;
    
    public class App {
    
      final static Logger logger = Logger.getLogger(App.class);
    
      public static void main(String[] args) {
    
        App obj = new App();
    
        try {
          obj.divide();
        } catch (ArithmeticException ex) {
          logger.error("Sorry, something wrong!", ex);
        }
      }
    
      private void divide() {
        int i = 10 / 0;
    
      }
    
    }
  • 相关阅读:
    Manjaro Linux自带的Python没有安装IDLE的解决办法
    Python入门 | IDLE的介绍和使用方法
    用U盘装CentOS 7出现dracut:/#问题的解决办法
    在Ubuntu下,如何安装坚果云deb文件
    windows7下进行ubuntu U盘启动盘的制作
    oracle 死锁和锁等待区别
    MySQL数据库设计总结
    oracle开机自启
    微信备份提示当前网络状况复杂,请尝试使用其他网络的解决方法
    ORA-27090 Unable to reserve kernel resources for asynchronous disk I/O
  • 原文地址:https://www.cnblogs.com/daijiabao/p/11217049.html
Copyright © 2011-2022 走看看