温馨提示×

Ubuntu Tomcat日志中如何记录访问信息

小樊
40
2025-10-13 15:06:23
栏目: 智能运维

Ubuntu Tomcat配置访问日志记录步骤

1. 启用访问日志(修改server.xml)

访问日志的核心配置在Tomcat的server.xml文件中,需通过AccessLogValve阀门组件实现。操作步骤如下:

  • 打开配置文件:sudo nano ${CATALINA_HOME}/conf/server.xml${CATALINA_HOME}为Tomcat安装目录,如/opt/tomcat)。
  • 定位<Host>标签(通常在文件末尾),在其内部添加以下配置(若已有则取消注释):
    <Valve className="org.apache.catalina.valves.AccessLogValve" 
           directory="${catalina.base}/logs" 
           prefix="localhost_access_log." 
           suffix=".txt" 
           pattern="%h %l %u %t \"%r\" %s %b %{Referer}i %{User-Agent}i" 
           resolveHosts="false"/>
    
    • 关键参数说明
      • directory:日志存储路径(${catalina.base}/logs为Tomcat默认日志目录,如/opt/tomcat/logs);
      • prefix:日志文件前缀(如localhost_access_log.,生成的文件名为localhost_access_log.2025-10-13.txt);
      • suffix:日志文件后缀(如.txt);
      • pattern:日志格式(详见下文“自定义日志格式”);
      • resolveHosts:是否解析主机名(设为false可提升性能,仅记录IP地址)。

2. 自定义访问日志格式

通过pattern属性可定义日志输出的字段,常用格式说明如下:

  • 基础格式common):%h %l %u %t \"%r\" %s %b(记录客户端IP、标识、用户、时间、请求、状态码、响应大小);
  • 详细格式combined):%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\"(在基础格式上增加引用页和User-Agent);
  • 自定义格式示例%h %l %u %t \"%r\" %s %b %D %{User-Agent}i(增加请求处理时间%D,单位为毫秒)。

3. 配置日志轮转(避免日志过大)

为防止访问日志占用过多磁盘空间,需启用日志轮转功能:

  • 方式一:通过server.xml配置
    AccessLogValve中添加rotatable="true"(默认开启)和maxDays="30"(保留30天日志):
    <Valve className="org.apache.catalina.valves.AccessLogValve" 
           ... 
           rotatable="true" 
           maxDays="30"/>
    
  • 方式二:使用Logrotate工具(推荐)
    安装Logrotate:sudo apt-get install logrotate
    创建Tomcat专用配置文件:sudo nano /etc/logrotate.d/tomcat,添加以下内容:
    /opt/tomcat/logs/localhost_access_log.*.txt {
        daily
        rotate 7
        compress
        missingok
        notifempty
        create 640 tomcat tomcat
        sharedscripts
        postrotate
            /bin/kill -USR1 $(cat /opt/tomcat/temp/tomcat.pid 2>/dev/null) 2>/dev/null || true
        endscript
    }
    
    说明:每日轮转、保留7天、压缩旧日志、通过Tomcat PID发送信号触发日志切换。

4. 重启Tomcat使配置生效

完成上述配置后,重启Tomcat服务:

sudo systemctl restart tomcat

验证日志是否生成:tail -f ${CATALINA_HOME}/logs/localhost_access_log.txt,访问Tomcat应用后,日志会实时输出访问信息。

0