4.6.1. 在 Tomcat 里面配置日志
本章介绍在开发环境怎么配置日志。
执行 Gradle setupTomcat 任务会将 Tomcat 安装到项目目录并且添加 Tomcat 的其它配置。具体来说,会在 tomcat/bin
目录创建 setenv.bat
和 setenv.sh
环境配置文件,还有在 tomcat/conf
目录创建 logback.xml
文件。
除了所有的其它配置,setenv.*
还使用 CATALINA_OPTS
变量定义了 logback.xml
配置文件需要加载的参数。
logback.xml
定义了日志的配置。文件有如下结构:
-
appender
元素定义了日志的 “输出设备”。主要的 appenders 有FILE - 文件
和CONSOLE - 终端
。ThresholdFilter
的level
参数定义了消息的阈值。文件输出的默认值是DEBUG
,终端输出的默认值是INFO
。也就是说ERROR
,WARN
,INFO
和DEBUG
消息会输出到文件,但是只有ERROR
,WARN
和INFO
级别的消息输出到终端。file
参数定义了文件输出目标文件的路径。默认值是tomcat/logs/app.log
。 -
logger
元素定义了编码角度打印消息的 logger 参数。Logger 名称是有级别的,比如对于com.company.sample
logger 的设置也会影响com.company.sample.core.CustomerServiceBean
和com.company.sample.web.CustomerBrowse
的 logger,前提是这两个类没有显式的声明他们各自的 logger 参数。日志的打印级别是通过
level
属性来定义最低级别。比如,如果定义的是INFO
级别,那么DEBUG
和TRACE
类型的消息就不会被日志记录。需要注意的一点就是,在 appender 里面设置的级别也会影响日志的打印。Logger 是针对类或者包的日志定义,而 appender 是针对文件或者终端的设置。
可以在 web 客户端的 Administration > Server Log 界面快速修改正在运行的服务的 logger 级别和 appender 的阈值。任何对日志的改动只会影响正在运行的服务,设置并不会保存在文件里。这个界面也支持从日志目录 (tomcat/logs)查看和加载 Tomcat 服务的日志。
平台会自动添加以下信息到日志文件的消息中:
-
application – 打印消息的应用程序名称。这个信息可以帮助定位消息是从哪个 block 打印的(Middleware, Web Client),因为这两个模块写的是同一个日志文件。
-
user – 调用打印消息代码的登录用户名。用来在日志里跟踪具体用户的行为。如果打印消息的代码没有被特定用户的会话调用,就不会在日志里添加用户信息。
比如,下面这个消息是被 admin
会话下调用的中间件(app-core
)代码写入的:
16:12:20.498 DEBUG [http-nio-8080-exec-7/app-core/admin] com.haulmont.cuba.core.app.DataManagerBean - loadList: ...