log4j 用法

log4j 依赖

<!-- log4j 依赖导入-->
<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.17</version>
  <type>bundle</type>
</dependency>

<!-- maven 中添加 bundle 类型的依赖包需要添加 bundle 插件-->
<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <extensions>true</extensions>
</plugin>

log4j 配置

名称与路径

// 配置文件名称
log4j.properties

// 配置文件路径
手动在 java/resources下创建

日志的输出的目的地

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

Layout:日志输出格式

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

格式化日志信息

形式 描述
%d 输出日志时间点的日期或时间,可以在其后指定格式,比如:%d
%t 输出产生该日志事件的线程名
%p 优先级 DEBUG/INFO/ERROR
%c 所属类的全名(包括包名)
%l 发生的位置,在某个类的某行
%m 输出代码中指定的讯息,如 log( message ) 中的 message
%n 输出一个换行符号

示例

### 设置 ###
log4j.rootLogger = debug,stdout,fileAppender

### 输出信息到控制抬 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.ImmediateFlush = true
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %t %5p %c{1}:%L - %m%n
    
### 输出DEBUG 级别以上的日志到=D:/log4j-log.log ###
log4j.appender.fileAppender=org.apache.log4j.FileAppender
log4j.appender.fileAppender.ImmediateFlush = true
log4j.appender.fileAppender.Append=true
log4j.appender.fileAppender.Encoding=UTF8
log4j.appender.fileAppender.Threshold = DEBUG
log4j.appender.fileAppender.File=D:/log4j-log.log
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.fileAppender.layout.ConversionPattern=%d %5p %c{1}:%L - %m%n

# 替换格式
# log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d %t method:%l%n%m%n
# log4j.appender.stdout.layout.ConversionPattern=[%-5p]-[%d{yy/MM/dd HH:mm:ss:SSS}]-%l:%m%n

log4j 应用

import org.apache.log4j.Logger;

public class Demo {
    private static Logger log = Logger.getLogger(Demo.class);
    public static void main(String[] args) {
        log.debug("debug...");
        log.error("error...");
    }
}

log4j 疑难

问题

// 过程中可能出现下面的问题
og4j:WARN No appenders could be found for logger (java.lang.Class).
log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

解决方案

public class Hello {
    private static Logger log = Logger.getLogger(Hello.class.getClass());
    public static void main(String[] args) {
        //获取当前项目的根目录
        String relativelyPath=System.getProperty("user.dir");
        PropertyConfigurator.configure(relativelyPath + "\\src\\main\\resources\\log4j.properties");
        log.debug("debug...");
        log.error("error...");
    }
}
posted @ 2021-06-17 20:09  山奈  阅读(57)  评论(0)    收藏  举报