Log4j 1.x和2.x的配置示例
2023-09-11 14:16:24 时间
目前大部分项目都是使用slf4j+log4j作为日志框架,
建议大家都迁移到log4j 2.x, 但目前很多开源项目使用的仍然是1.x。本文给出Log4j 1.x和2.x 需要的依赖及配置示例, 以便在使用时作为参考。
2015年8月5日, Logging Services Project Management Committee 宣布Log4j 1.x已经到了生命的尽头。有关声明的全文,请参阅Apache博客。Log4j用户推荐升级到Apache Log4j 2
目录
2.x支持的属性替换【Property Substitution】
log4j 需要的依赖
1.x
依赖的配置如下:
<properties>
<slf4j-log4j12.version>1.7.25</slf4j-log4j12.version>
<slf4j-api.version>1.7.25</slf4j-api.version>
</properties>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j-log4j12.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
2.x
依赖的配置如下:
<!-- log4j2日志-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.4.2</version>
</dependency>
log4j 的配置示例
1.x
配置示例如下,详细可以参考:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="encoding" value="UTF-8" />
<param name="target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %p [%c:%L] - %m%n" />
</layout>
</appender>
<appender name="FileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${LOG_DIR}/run.log" />
<param name="append" value="true" />
<param name="encoding" value="UTF-8" />
<param name="maxFileSize" value="1073741824" />
<param name="maxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyy-MM-dd HH\:mm\:ss,SSS} %p [%c:%L] - %m%n" />
</layout>
</appender>
<appender name="ASYNCFileAppender" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="16384" />
<appender-ref ref="FileAppender" />
</appender>
<logger name="org.apache.spark" additivity="false">
<level value="WARN"/>
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.spark_project" additivity="false">
<level value="WARN"/>
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.vesoft.nebula.connector" additivity="false">
<level value="WARN"/>
<appender-ref ref="CONSOLE"/>
</logger>
<root>
<level value="INFO" />
<appender-ref ref="CONSOLE" />
</root>
</log4j:configuration>
2.x
配置示例如下,详细可参考:http://logging.apache.org/log4j/2.x/manual/
<?xml version="1.0" encoding="UTF-8"?>
<!-- 配置参考 http://logging.apache.org/log4j/2.x/manual/appenders.html http://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout
http://logging.apache.org/log4j/2.x/manual/configuration.html http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution -->
<configuration status="warn" name="graph" packages="">
<properties>
<property name="LOG_HOME">${sys:LOG_HOME:-logs}</property>
<property name="FILE_NAME">${sys:LOG_FILE_NAME:-runlog}</property>
</properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %c{3}:%M:%L - %msg%n </Pattern>
</PatternLayout>
</Console>
<RollingRandomAccessFile
name="file"
fileName="${LOG_HOME}/${FILE_NAME}_all.log"
filePattern="${LOG_HOME}/${FILE_NAME}_all-%d{yyyy-MM-dd HH-mm}-%i.log">
<append>false</append>
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %c{3}:%M:%L - %msg%n </Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="24" modulate="true"/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<DefaultRolloverStrategy max="3"/>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="ERROR_FILE"
fileName="${LOG_HOME}/${FILE_NAME}_error.log"
filePattern="${LOG_HOME}/${FILE_NAME}_error-%d{yyyy-MM-dd}-%i.log.gz">
<append>false</append>
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %c{3}:%M:%L - %msg%n</Pattern>
</PatternLayout>
<ThresholdFilter level="ERROR" onMatch="ACCEPT"
onMismatch="DENY"/>
<Policies>
<TimeBasedTriggeringPolicy interval="24"
modulate="true"/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<DefaultRolloverStrategy max="${log.maxHistory.error}"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
<logger name="org.apache.hadoop" level="WARN" additivity="false">
<appender-ref ref="file"/>
</logger>
<logger name="org.apache.spark" level="WARN" additivity="false">
<appender-ref ref="file"/>
</logger>
<logger name="io.netty" level="WARN" additivity="false">
<appender-ref ref="file"/>
</logger>
<logger name="org.apache.commons" level="WARN" additivity="false">
<appender-ref ref="file"/>
</logger>
</Loggers>
</configuration>
2.x中的layout
详见:http://logging.apache.org/log4j/2.x/manual/layouts.html
http://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout
An Appender uses a Layout to format a LogEvent into a form that meets the needs of whatever will be consuming the log event
最常用用的是Pattern Layout,其它的还有CSV、JSON、HTML、XML、YAML等
2.x支持的属性替换【Property Substitution】
详见:http://logging.apache.org/log4j/2.x/manual/configuration.html#Appenders
JAVA使用示例
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOG = LoggerFactory.getLogger(SingleExample.class)
LOG.info("application staring");
相关文章
- Windows下python脚本开机自启动配置
- browsersync按照官网,然后本地配置后,动态监听时不起作用
- 配置git账号和密码
- 微信通过openID发送消息/后台post、get提交并接收数据 C# .NET 配置404,500等错误信息 连接字符串
- git配置github的ssh
- Nessus漏洞扫描教程之配置Nessus
- 【Android Studio】Gradle配置及问题解决
- 移动开发大全之 macOS上使用.NET MAUI开发应用程序支持M1 和intel芯片(教程含环境配置过程)
- jenkins pipeline 配置
- Java学习-089-springboot 通过 Spring Initializr 创建服务及IDEA导入后配置更新示例
- jboss_log4j.xml配置
- Windows下MySQL下载安装、配置与使用
- Nginx(四):Nginx配置实战
- 利用华为ENSP模拟器分析和配置中小型企业网络的综合实验(下)
- 配置Log4j(非常具体)
- 配置Log4j(非常具体)
- Linux下vsftp服务器原理、安装、配置实战
- Android Hook工具之Frida 安装配置教程
- springMVC项目在jboss7中配置应用自己的log4j--转载
- Java中核心注解的作用及其使用,了解Spring容器装载的过程和机制,自定义注解来实现自动配置项目依赖环境,包括mybatis、Dubbo、log4j、RabbitMQ、redis相关等自动配置