配置 slf4j
第一步:导入包
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.12</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.1</version> </dependency> <!--实现slf4j接口并整合--> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.1</version> </dependency>
第二步:配置文件在resources下新建logback.xml文件配置如下
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="true"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <property name="LOG_HOME" value="D:/home/logs//" /> <!-- 控制台 appender --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern> </encoder> </appender> <!-- 出错日志 appender --> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <Encoding>UTF-8</Encoding> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 按天回滚 daily --> <!-- log.dir 在maven profile里配置 --> <fileNamePattern > ${ip}security-error-%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 日志最大的历史 60天 --> <maxHistory>60</maxHistory> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 --> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 访问日志 appender --> <appender name="ACCESS" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <Encoding>UTF-8</Encoding> <!-- 按天回滚 daily --> <fileNamePattern>${LOG_HOME}security-access-%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 日志最大的历史 60天 --> <maxHistory>60</maxHistory> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern> </encoder> </appender> <!-- info日志 appender --> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <Encoding>UTF-8</Encoding> <!-- 按天回滚 daily --> <fileNamePattern>${LOG_HOME}security-info-%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 日志最大的历史 60天 --> <maxHistory>60</maxHistory> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 --> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!--日志打印的包的范围,及分类日志文件存储 --> <logger name="com.ssm" additivity="false"> <level value="DEBUG" /> <appender-ref ref="STDOUT"/> <appender-ref ref="ERROR"/> <appender-ref ref="ACCESS"/> <appender-ref ref="INFO" /> </logger> <!--控制台打印资源加载信息--> <root level="info"> <appender-ref ref="STDOUT" /> </root> </configuration>
第三步:写工具类 LoggerUtils.java
package com.ssm.utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LoggerUtils { private static Logger logger = LoggerFactory.getLogger(LoggerUtils.class); /** * 日志 info级别 * * @param message */ public static void info(String className,String methodName,Object message){ logger.info("["+className+"---"+methodName+"] 系统提示:"+String.valueOf(message)); } /** * 日志 info级别 * */ public static void info(Class<?> clazz,Object message){ logger.info("["+clazz.getName()+"] "+String.valueOf(message)); } /** * 日志 error级别 * * @param message */ public static void error(String className,String methodName,Object message){ logger.error("["+className+"---"+methodName+"] 异常提示:"+String.valueOf(message)); } /** * 日志 error级别 * @param message */ public static void error(Class<?> clazz,Object message){ logger.error("["+clazz.getName()+"] 异常提示: "+String.valueOf(message)); } /** * 日志 error级别 * * @param message */ public static void error(Class<?> clazz,Object message,Throwable paramThrowable){ logger.error("["+clazz.getName()+"] "+String.valueOf(message),paramThrowable); } }
第四步:测试
@Test public void ss(){ LoggerUtils.info(Test1.class,"dd"); LoggerUtils.error(Test1.class,"4e4e2q"); }
Ok!