在resources目录下添加logback.xml文件spring
<?xml version="1.0" encoding="UTF-8"?> <configuration> <springProperty name="LOG_PATH" source="logging.path" defaultValue="/home/admin/xxx/logs" /> <!--自定义控制台日志格式--> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder charset="UTF-8"> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <!--系统INFO级别日志-滚动记录日志--> <appender name="SYS_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--被写入的文件名,能够是相对目录,也能够是绝对目录,若是上级目录不存在会自动建立,没有默认值--> <File>${LOG_PATH}/sys_info.log</File> <!--若是是 true,日志被追加到文件结尾,若是是 false,清空现存文件,默认是true。--> <append>true</append> <!--级别过滤器(LevelFilter),此处只打INFO级别的日志--> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <!--下面2个属性表示匹配规定level的接受打印,不匹配的(即非INFO)拒绝打印--> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <!-- 最经常使用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--设置滚动文件规则,若是直接使用 %d,默认格式是 yyyy-MM-dd--> <fileNamePattern>${LOG_PATH}/sys_info.log.%d</fileNamePattern> <!--保留30天的日志--> <maxHistory>30</maxHistory> </rollingPolicy> <encoder charset="UTF-8"> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <!--系统ERROR级别日志-滚动记录日志--> <appender name="SYS_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>${LOG_PATH}/sys_error.log</File> <append>true</append> <!--此处只打ERROR级别的日志--> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/sys_error.log.%d</fileNamePattern> <maxHistory>12</maxHistory> </rollingPolicy> <encoder charset="UTF-8"> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <!--业务business-1日志--> <appender name="bs1_Appender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>${LOG_PATH}/api.log</File> <append>true</append> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/api.log.%d</fileNamePattern> <maxHistory>12</maxHistory> </rollingPolicy> <encoder charset="UTF-8"> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <!-- additivity属性为false,表示此logger的打印信息再也不向上级传递(注:该值默认为true,logger的日志信息会依次向上级传递,最高级logger为root,若是不加则至少打印2次,自己一次,root一次)--> <logger name="bs1" additivity="false" level="INFO"> <appender-ref ref="bs1_Appender"/> </logger> <!--info和error分开打印,注:ERROR > WARN > INFO > DEBUG > TRACE--> <root level="INFO"> <appender-ref ref="CONSOLE"/> <appender-ref ref="SYS_INFO"/> <appender-ref ref="SYS_ERROR"/> </root> </configuration>
在application.yml文件中添加日志目录api
logging.path=/media/data/tomcatlogs
在使用类中调用对应业务名字的loggertomcat
@Component public class AService { private final Logger log = LoggerFactory.getLogger("bs1"); public void fun1(){ log.info("{}","msg"); } }
其中bs1就是业务的名字app