logback基本配置
如果使用的是springboot,默认是带有logback依赖的,在resource下直接添加配置文件 logback-spring.xml
如果是spring需要自己引入依赖,配置文件为logback.xml:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>0.1.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.12</version>
</dependency>
<!--logback-->
我自己常用的配置大概如下,alarmLogAppender为根据业务自定义的appender,
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_HOME" value="/export/Logs/log-test"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%date] [%p] [%logger] [%M] [%t] [%line] [%m]%n</pattern>
</encoder>
</appender>
<appender name="LogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/all.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/all.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>[%date] [%p] [%logger] [%M] [%t] [%line] [%m]%n</pattern>
</encoder>
</appender>
<appender name="alarmLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/main/alarm.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/main/alarm.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>[%date] [%p] [%logger] [%M] [%t] [%line] [%m]%n</pattern>
</encoder>
</appender>
<logger name="com.hk.goods.alarm" level="INFO" additivity="false">
<appender-ref ref="alarmLogAppender"/>
</logger>
<root level="INFO">
<appender-ref ref="console"/>
<appender-ref ref="LogFile"/>
</root>
</configuration>
说明:
如下配置为了将所有报警任务的日志输出到一个单独的文件而自定义的appender和logger,additivity="false"说明日志只在这个文件打印,不会再root标签里的所有日志里面打印,即不会向上传递
<appender name="alarmLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/main/alarm.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/main/alarm.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>[%date] [%p] [%logger] [%M] [%t] [%line] [%m]%n</pattern>
</encoder>
</appender>
<logger name="com.hk.goods.alarm" level="INFO" additivity="false">
<appender-ref ref="alarmLogAppender"/>
</logger>
logger的name可以配置为包名或类名,其实这个名字和我们使用的时候传入的类有关
Logger logger = LoggerFactory.getLogger(TestLog.class);
即表示有一个logger输出器,名字为com.hk.goods.alarm.TestLog,使用该logger输出的日志都会打印到alarm.log