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

来源:互联网 发布:菊花插件数据下载 编辑:程序博客网 时间:2024/05/21 11:32

目标

Operating System Version
Eclipse Version
JDK version
Log4j 2 Version

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

方案

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

即类似于这样的形式:

rootLogger.appenderRef.stdout.ref = STDOUTrootLogger.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 的两个 appendername=PropertiesConfigproperty.filename = logsappenders = console, file# 设置两个 appender 的参数,其中 name 是用于之后的 ref 的# 首先是 console appenderappender.console.type = Consoleappender.console.name = STDOUTappender.console.layout.type = PatternLayoutappender.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.logappender.file.type = Fileappender.file.name = LOGFILEappender.file.fileName=${filename}/propertieslogs.logappender.file.layout.type=PatternLayoutappender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n# 设置 rootLogger 的记录级别,将 console 和 file 绑定到 rootLogger 上。rootLogger.level = debugrootLogger.appenderRef.stdout.ref = STDOUTrootLogger.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.

参考

  • https://dzone.com/articles/log4j-2-configuration-using-properties-file
  • https://springframework.guru/log4j-2-configuration-using-properties-file/
  • https://stackoverflow.com/questions/3382985/how-to-make-log4j-to-write-to-the-console-as-well
原创粉丝点击