1 logbak 日志依赖,已经添加到springboot项目中类,不需要添加依赖啦
2直接在resource中添加配置文件就可以使用啦
< ? xml version= "1.0" encoding= "UTF-8" ? >
< ! --
scan:当此属性设置为true 时,配置文件如果发生改变,将会被重新加载,默认值为true 。
scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒当scan为true 时,此属性生效。默认的时间间隔为1 分钟。
debug:当此属性设置为true 时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false 。
-- >
< configuration scan= "false" scanPeriod= "60 seconds" debug= "false" >
< ! -- 定义日志的根目录 -- >
< property name= "LOG_HOME" value= "/app/log" / >
< ! -- 定义日志文件名称 -- >
< property name= "appName" value= "atguigu-springboot" > < / property>
< ! -- ch. qos. logback. core. ConsoleAppender 表示控制台输出 -- >
< appender name= "stdout" class = "ch.qos.logback.core.ConsoleAppender" >
< ! --
日志输出格式:
% d表示日期时间,
% thread表示线程名,
% - 5 level:级别从左显示5 个字符宽度
% logger{ 50 } 表示logger名字最长50 个字符,否则按照句点分割。
% msg:日志消息,
% n是换行符
-- >
< layout class = "ch.qos.logback.classic.PatternLayout" >
< pattern> % d{ yyyy- MM- dd HH: mm: ss. SSS} == == [ % thread] == == % - 5 level % logger{ 50 } - % msg% n< / pattern>
< / layout>
< / appender>
< ! -- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -- >
< appender name= "appLogAppender" class = "ch.qos.logback.core.rolling.RollingFileAppender" >
< ! -- 指定日志文件的名称 -- >
< file> ${ LOG_HOME} / ${ appName} . log< / file>
< ! --
当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名
TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。
-- >
< rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >
< ! --
滚动时产生的文件的存放位置及文件名称 % d{ yyyy- MM- dd} :按天进行日志滚动
% i:当文件大小超过maxFileSize时,按照i进行文件滚动
-- >
< fileNamePattern> ${ LOG_HOME} / ${ appName} - % d{ yyyy- MM- dd} - % i. log< / fileNamePattern>
< ! --
可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动,
且maxHistory是365 ,则只保存最近365 天的文件,删除之前的旧文件。注意,删除旧文件是,
那些为了归档而创建的目录也会被删除。
-- >
< MaxHistory> 365 < / MaxHistory>
< ! --
当日志文件超过maxFileSize指定的大小是,根据上面提到的% i进行日志文件滚动 注意此处配置SizeBasedTriggeringPolicy是无法实现按文件大小进行滚动的,必须配置timeBasedFileNamingAndTriggeringPolicy
-- >
< timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" >
< maxFileSize> 100 MB< / maxFileSize>
< / timeBasedFileNamingAndTriggeringPolicy>
< / rollingPolicy>
< ! -- 日志输出格式: -- >
< layout class = "ch.qos.logback.classic.PatternLayout" >
< pattern> % d{ yyyy- MM- dd HH: mm: ss. SSS} [ % thread ] - [ % - 5 level ] [ % logger{ 50 } : % line ] - % msg% n< / pattern>
< / layout>
< / appender>
< ! --
logger主要用于存放日志对象,也可以定义日志类型、级别
name:表示匹配的logger类型前缀,也就是包的前半部分
level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR
additivity:作用在于children- logger是否使用 rootLogger配置的appender进行输出,
false :表示只用当前logger的appender- ref,true :
表示当前logger的appender- ref和rootLogger的appender- ref都有效
-- >
< ! -- hibernate logger -- >
< logger name= "com.atguigu" level= "debug" / >
< ! -- Spring framework logger -- >
< logger name= "org.springframework" level= "debug" additivity= "false" > < / logger>
< ! --
root与logger是父子关系,没有特别定义则默认为root,任何一个类只会和一个logger对应,
要么是定义的logger,要么是root,判断的关键在于找到这个logger,然后判断这个logger的appender和level。
-- >
< root level= "info" >
< appender- ref ref= "stdout" / >
< appender- ref ref= "appLogAppender" / >
< / root>
< / configuration>
3 测试
@RequestMapping ( "/getUser" )
@ResponseBody
public User getUser ( ) {
User user = new User ( ) ;
user. setEmail ( "192484348@qq.com" ) ;
user. setLastName ( "Jhon" ) ;
user. setFirstName ( "Andrew" ) ;
user. setBirthday ( new Date ( ) ) ;
LOGGER. info ( "user info: {}" , JSON. toJSONString ( user) ) ;
return user;
}