Log4j 2 同时输出日志到控制台和文件

目标

Operating System Version
Eclipse Version
JDK version
Log4j 2 Version

Log4j 2 同时输出日志到控制台和文件。

方案

给同一个 logger 绑定一个 console appender 和一个 file appender。

即类似于这样的形式:

rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger.appenderRef.file.ref = LOGFILE

实例

源码:https://github.com/HustLion/java_console_file_log4j

  1. 新建一个 log4j 2 项目。并在 App.java 中写上相应的 log 代码。可参考:Eclipse 建立 Log4j 2 的 Hello World 项目(使用 properties 文件)
  2. log4j2.properties 中加入以下内容

    
    
    # 建立名称为 console 和 file 的两个 appender
    
    name=PropertiesConfig
    property.filename = logs
    appenders = console, file
    
    
    # 设置两个 appender 的参数,其中 name 是用于之后的 ref 的
    
    
    # 首先是 console appender
    
    appender.console.type = Console
    appender.console.name = STDOUT
    appender.console.layout.type = PatternLayout
    appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
    
    
    # 然后是 File appender, 输出路径是 ${filename}/propertieslogs.log
    
    
    # filename 在前面已经设定为 logs
    
    
    # 所以输出日志文件是在当前项目根目录下的 logs/propertieslogs.log
    
    appender.file.type = File
    appender.file.name = LOGFILE
    appender.file.fileName=${filename}/propertieslogs.log
    appender.file.layout.type=PatternLayout
    appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
    
    
    
    # 设置 rootLogger 的记录级别,将 console 和 file 绑定到 rootLogger 上。
    
    rootLogger.level = debug
    rootLogger.appenderRef.stdout.ref = STDOUT
    rootLogger.appenderRef.file.ref = LOGFILE
  3. 运行项目,命令行输出与当前目录下的logs/propertieslogs.log都是以下内容

    [ERROR] 2017-05-28 12:12:12.376 [main]  - Logged by root logger: Hello this is an error
    [INFO ] 2017-05-28 12:12:12.378 [main]  - Logged by root logger: Hello World!
    [DEBUG] 2017-05-28 12:12:12.379 [main]  - Logged by root logger: Hello debug message.

参考

猜你喜欢

转载自blog.csdn.net/u013614126/article/details/72792521