如何记录LOG ---- LOGBACK
1.JAVA WEB程序出现非运行时异常、不跳转错误页面、 就使用try-catch 捕获异常 使程序不跳转错误页面且使用Logger.error 记录错误、程序继续执行异常方案
2.JAVA WEB程序出现非运行时异常、跳转错误页面、 就不用捕获异常。直接继续抛出异常,抛给Spring Spring boot、Spring boot设置跳转错误页面、AJAX会进入error方法 跳转错误页面
运行时异常(就是程序bug、不应该出现的)Spring boot 也是会自动跳转错误页面、AJAX会进入error方法 跳转错误页面
如果需要Logger.error记录异常、在什么地方捕获异常并使用Logger.error方法
当函数没有返回值时、这时候就必须捕获异常记录日志、做相应的处理。不然就一直向上抛。
因为有返回值时、你捕获异常无法做相应的操作、因为你需要返回数据、你根本不知道返回什么数据。没办法替调用者做处理、除非是返回boolean类型
LOGBACK.XML
过滤器,可以指定哪些包,哪个记录到等级
root > com.meng > com.meng.a_controller 等级制、additivity是设置下级是否向上级传递打印log信息、默认true、向上级传递打印信息,则会打印多次log信息
修改为false 则不会向上传递; 正常情况下是不需要打印多次信息的;
<logger name="com.meng" level="INFO" additivity="false">
<appender-ref ref="LOG_FILE"/>
</logger>
<logger name="com.meng.a_controller" level="DEBUG" additivity="false">
<appender-ref ref="LOG_FILE"/>
</logger>
全局,控制台和log文件 记录INFO及以上级别日志 生产环境为Error
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="LOG_FILE"/>
</root>
注意:
spring boot中设置sql打印:logging.level.xxx.xxx.xxx=DEBUG
在logback-spring.xml的配置中,如果不把appender name="LOG_FILE" 放入<springPofile></springPofile>中、就算你只是输出到CONSOLE, 还是会去创建LOG_FILE中设置的log文件
当然日志还是在控制台输出,并不会写到log文件中。这个问题并不仅仅出现在spring boot 中,是logback本身的问题,就算不用spring也会出现这种问题
纯属个人理解
不理解或者是有什么错误的地方、欢迎留言并会及时回复和改正的