1.在一开始引入的时候一值报错,原因是springboot自带了日志模块,所以我们要先把默认的去除掉,再添加
具体办法:
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions><!-- 去掉springboot默认配置 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- log4j2 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!-- 日志桥接包 桥接包的版本须对应log4j2的版本 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
<!-- 日志框架(门面) -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
2.在写log4j2.xml文件时总是出问题,特别时提示什么格式问题,实际上是代码可能出现了写错的问题。很多都是字符串,所以没有错误提示。主要是仔细检查下相关代码十分书写正确
下面给出我修改过能够使用的代码
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" monitorInterval="60" strict="true">
<properties>
<property name="logpath">D:/log</property>
<property name="charset">UTF-8</property>
<property name="pattern">%-d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %p %X{ip} %t %C %X{requestId} %M %m %n</property>
</properties>
<appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="${pattern}" charset="${charset}"/>
</Console>
<!-- 同步输出到本地日志 -->
<File name="log" fileName="${logpath}/log.log" append="false">
<PatternLayout pattern="${pattern}"/>
</File>
<!-- sys:user.home项目路径 -->
<RollingFile name="RollingFileInfo" fileName="${logpath}/info.log" filePattern="${logpath}/info-%d{yyyy-MM-dd}-%i.log">
<!-- 日志输出过滤 -->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${pattern}"/>
<!-- 日志滚动策略 -->
<Policies>
<!-- 时间滚动策略 -->
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
<SizeBasedTriggeringPolicy size="50MB"/>
</Policies>
<!-- 最多保存几天的日志 -->
<DefaultRolloverStrategy max="20"/>
</RollingFile>
<!-- fileName生成文件名及路径,filepattern文件转移及重命名规则,patternlayout输出格式 -->
<RollingFile name="RollingFileWarn" fileName="${logpath}/warn.log" filePattern="${logpath}/warn-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="warn" onMatch="ACCEPT" onMisMatch="DENY"/>
<PatternLayout pattern="${pattern}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
<SizeBasedTriggeringPolicy size="50MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
<RollingFile name="RollingFileError" fileName="${logpath}/error.log" filePattern="${logpath}/error-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="error" onMatch="ACCEPT" onMisMatch="DENY"/>
<PatternLayout pattern="${pattern}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="6" modulate="true"/> //时间循环
<SizeBasedTriggeringPolicy size="50MB"/> //大小限制
</Policies>
<DefaultRolloverStrategy max="20"/> //文件数量限制
</RollingFile>
</appenders>
<loggers>
<logger name="org.springframework" level="INFO"/>
<logger name="org.mybatis" level="INFO"/>
<root level="all">
<appender-ref ref="console"/>
<appender-ref ref="RollingFileWarn"/>
<appender-ref ref="RollingFileError"/>
<appender-ref ref="RollingFileInfo"/>
</root>
</loggers>
</Configuration>
在使用上就是在包里面引入日志变量
private static final Logger logger = LoggerFactory
.getLogger(HomeController.class); //这里填入包名
然后在方法中直接使用
@RequestMapping(value="/index",method=RequestMethod.GET)
public String login1(Model model) {
logger.debug("controller");
return "test";
}