版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HistoryCreator/article/details/82184803
1.添加依赖 (pom.xml)
<!--log4j2-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.11.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
<dependency >
<groupId >javax.mail </groupId >
<artifactId >mail </artifactId >
<version >1.4.5 </version >
</dependency >
<dependency >
<groupId >com.sun.mail </groupId >
<artifactId >javax.mail </artifactId >
<version >1.5.4 </version >
</dependency >
2.配置日志策略(log4j2.xml)
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<properties>
<property name="logPath">/opt/tomcat7/logs/creditplatform/${sys:logName}</property>
<property name="errorLogPath">/opt/tomcat7/logs/creditplatform/error/${sys:logName}</property>
</properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout charset="UTF-8" pattern="[%5p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n" />
</Console>
<RollingFile name="debugFile" fileName="${logPath}" filePattern="${logPath}-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout charset="UTF-8" pattern="[%5p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="200 MB" />
</Policies>
<DefaultRolloverStrategy max="20">
<Delete basePath="${logPath}" maxDepth="2">
<IfFileName glob="*/app*.log.gz" />
<IfLastModified age="30D" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<!--如果需要配置多个Rollingfile地址,还需要在root下添加appender-ref ref="RollingFile1"/>只显示error级别的信息-->
<RollingFile name="errorFile" fileName="${errorLogPath}" filePattern="${errorLogPath}-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout charset="UTF-8" pattern="[%5p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="50MB"/>
</Policies>
</RollingFile>
<SMTP name="Mail" subject="Error Log" to="[email protected]" from="[email protected]"
smtpHost="smtp.mxhichina.com" smtpUsername="...." smtpDebug="true"
smtpPassword="......" smtpPort="25" bufferSize="50">
</SMTP>
</Appenders>
<Loggers>
<!-- 第三方日志系统 -->
<logger name="org.springframework.core" level="info"/>
<logger name="org.springframework.beans" level="info"/>
<logger name="org.springframework.context" level="info"/>
<logger name="org.springframework.web" level="info"/>
<logger name="org.apache.http" level="warn"/>
<logger name="org.apache.zookeeper" level="ERROR" additivity="false"></logger>
<Root level="DEBUG">
<AppenderRef ref="debugFile" />
<AppenderRef level="ERROR" ref="errorFile" />
<AppenderRef ref="Console" />
<!--<AppenderRef level="ERROR" ref="Mail"/>-->
</Root>
</Loggers>
</Configuration>
3.动态修改日志文件名(自定义listenter中配置)
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
try {
//log4j2相关设置
System.setProperty("logName", InetAddress.getLocalHost().getHostName()+".log");
File file = new File(this.getClass().getClassLoader().getResource("").getPath()+"log4j2.xml");
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
ctx.setConfigLocation(file.toURI());
ctx.reconfigure();
} catch (Exception e) {
Log.error(e.getMessage(),e);
}
}