先引入maven依赖
org.slf4j
slf4j-api
1.7.25
然后在使用日志的类中创建logger全局变量
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public Logger logger = LoggerFactory.getLogger(TestController.class);
然后就可以使用logger.info、logger.error等在控制台输出日志了
logger.info("测试输出日志");
logger.error(e.toString(), e);
首先,在application.yml中配置日志输出
logging:
file: mylogs.log
path: D:/SuperMapDataLogs/mylogs
如果就这样,那么本地是不会出现相关的日志文件的,接下来,就是要在xml中配置logging.path
我们在src/main/resources中创建一个logback-spring.xml,注意:-spring在application之后可以扫描到,如果只写logback.xml那么该xml就会优先于application.yml进行扫描,因此无效
logback-spring.xml(修改后面的包名即可)
logback-spring
debug
${CONSOLE_LOG_PATTERN}
UTF-8
${logging.path}/web_debug.log
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
UTF-8
${logging.path}/web-debug-%d{yyyy-MM-dd}.%i.log
100MB
15
debug
ACCEPT
DENY
${logging.path}/web_info.log
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
UTF-8
${logging.path}/web-info-%d{yyyy-MM-dd}.%i.log
100MB
15
info
ACCEPT
DENY
${logging.path}/web_warn.log
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
UTF-8
${logging.path}/web-warn-%d{yyyy-MM-dd}.%i.log
100MB
15
warn
ACCEPT
DENY
${logging.path}/web_error.log
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
UTF-8
${logging.path}/web-error-%d{yyyy-MM-dd}.%i.log
100MB
15
ERROR
ACCEPT
DENY
下面对日志结构进行说明:
(1)FILE_LOG_PATTERN:日志输出格式变量,在控制台输出和文件中输出的append中都引用了此变量。
(2)consoleLog:定义一个控制台的appender
(3)fileLog:定义一个日志文件的appender,这就是文件输出的详细配置,
(4)logger:其name就是项目中对应的包路径,appender-ref是appender的引用,在本配置文件中,意思就是com.example.xyx.MySpringBootTest包下文件的日志,按照fileLog的配置去输出,即按照FILE_LOG_PATTERN的格式,输出到D:/data/mylog/myLog.log文件中。标签level="debug"是设置日志级别:作用是debug级别及其以上级别的日志会输出(debug、info、warn、error,,,),注意此处的level是一个下线,比其日志级别高的日志信息也会输出,很重要。additivity="false"是配置此logger是否提交给其他的logger或者root节点,如果true,则root也会执行或者其他的可以拦截到的logger节点,且logger的level优先级高;否则不会执行,在本配置文件中即控制台不会输出com.example.xyx.MySpringBootTest包下文件的日志。
(5)root:根节点,在logback-spring.xml中只引用了控制台日志输出配置,不会输出到文件,如果想输出到文件,可以写再写一个引用。level=info,在控制台输出into级别及其以上级别的日志。会拦截所有包下的日志,但是其输出会受到logger的影响,即注意logger中的additivity属性,如果为false,com.example.xyx.MySpringBootTest包下的日志不会输出到控制台。
配置完成之后,下面进行演示:
启动项目,刷新项目,此时多了一个文件夹
打开本地路径application.yml中配置的输出路径,此时多了一个文件夹
打开文件查看日志,看到日志生成成功