首页主机资讯怎样自定义Ubuntu Tomcat日志格式

怎样自定义Ubuntu Tomcat日志格式

时间2025-10-13 23:43:06发布访客分类主机资讯浏览308
导读:自定义Ubuntu Tomcat日志格式的步骤 1. 区分日志类型:运行日志 vs 访问日志 Tomcat的日志主要分为两类:运行日志(记录应用运行状态、错误信息等,如catalina.out)和访问日志(记录HTTP请求详情,如IP、UR...

自定义Ubuntu Tomcat日志格式的步骤

1. 区分日志类型:运行日志 vs 访问日志

Tomcat的日志主要分为两类:运行日志(记录应用运行状态、错误信息等,如catalina.out)和访问日志(记录HTTP请求详情,如IP、URL、状态码等)。两者需分别配置:

  • 运行日志:通过conf/logging.properties文件配置(适用于java.util.logging框架);
  • 访问日志:通过conf/server.xml文件配置(使用AccessLogValve组件)。

2. 自定义运行日志格式(logging.properties)

运行日志的默认格式由java.util.logging.SimpleFormatter控制,可通过修改logging.properties文件调整格式。
操作步骤

  • 打开配置文件:
    Ubuntu下Tomcat的logging.properties通常位于/etc/tomcatX/conf/(X为版本号,如9、8)或/opt/tomcat/conf/(手动安装路径)。使用文本编辑器(如nano)打开:

    sudo nano /etc/tomcat9/conf/logging.properties
    
  • 方式1:使用SimpleFormatter内置变量(推荐)
    找到java.util.logging.SimpleFormatter.format行(默认可能为%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$s %2$s %5$s%6$s%n),替换为自定义格式。常用变量说明:

    • %1$tY:4位年份(如2025);
    • %1$tm:2位月份(如09);
    • %1$td:2位日期(如13);
    • %1$tH:24小时制的小时(如14);
    • %4$s:日志级别(如INFO、SEVERE);
    • %2$s:线程名(如http-nio-8080-exec-1);
    • %5$s:类名(如org.apache.catalina.core.StandardEngine);
    • %6$s:日志消息(如“Server startup in 1234 ms”)。

    示例(包含日期、时间、级别、类名、消息):

    java.util.logging.SimpleFormatter.format = %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS [%4$s] [%2$s] %5$s%n
    
  • 方式2:自定义Formatter类(高级需求)
    若内置变量无法满足需求(如添加固定前缀、格式化堆栈信息),可创建自定义类继承java.util.logging.Formatter接口。

    • 编写Java类(如CustomFormatter.java):
      import java.util.logging.Formatter;
          
      import java.util.logging.LogRecord;
      
      public class CustomFormatter extends Formatter {
      
          @Override
          public String format(LogRecord record) {
          
              return String.format("[%1$tF %1$tT] [%2$s] [%3$s] - %4$s%n",
                      new java.util.Date(record.getMillis()), // 日期时间
                      record.getLevel().getLocalizedName(),     // 日志级别
                      record.getSourceClassName(),              // 类名
                      record.getMessage()                       // 消息
              );
      
          }
      
      }
          
      
    • 编译并放置到Tomcat的lib目录:
      javac -cp /usr/share/java/logging-api.jar CustomFormatter.java
      sudo cp CustomFormatter.class /etc/tomcat9/lib/
      
    • 修改logging.properties引用自定义类:
      java.util.logging.ConsoleHandler.formatter = com.example.CustomFormatter
      
  • 保存文件并重启Tomcat:

    sudo systemctl restart tomcat9
    

3. 自定义访问日志格式(server.xml)

访问日志记录HTTP请求的详细信息(如IP、URL、状态码),通过server.xml中的AccessLogValve组件配置。
操作步骤

  • 打开server.xml文件:

    sudo nano /etc/tomcat9/conf/server.xml
    
  • 找到< Host> 标签(通常位于< Engine> 内),添加或修改< Valve> 标签:

    <
        Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
        
        <
        !-- 其他配置 -->
        
        <
        Valve className="org.apache.catalina.valves.AccessLogValve" 
               directory="logs" 
               prefix="localhost_access_log" 
               suffix=".txt" 
               pattern="%h %l %u %t "%r" %s %b" 
               resolveHosts="false"/>
        
    <
        /Host>
        
    

    pattern参数说明(常用字段):

    • %h:远程主机IP;
    • %l:远程逻辑用户名(通常为-);
    • %u:远程用户身份验证信息(通常为-);
    • %t:请求时间(如[13/Oct/2025:14:30:00 +0800]);
    • "%r":HTTP请求行(如GET /index.html HTTP/1.1);
    • %s:HTTP状态码(如200、404);
    • %b:响应大小(字节,如-表示无内容)。

    示例(包含IP、时间、请求、状态码、响应大小):

    pattern="%h %t "%r" %s %b"
    
  • 保存文件并重启Tomcat:

    sudo systemctl restart tomcat9
    

4. 验证配置

  • 运行日志:检查Tomcat的logs/catalina.outlogs/catalina.YYYY-MM-DD.log文件,确认日志格式是否符合预期;
  • 访问日志:检查logs/localhost_access_log.YYYY-MM-DD.txt文件,确认访问日志格式是否正确。

通过以上步骤,可灵活自定义Ubuntu Tomcat的运行日志和访问日志格式,满足监控、排查问题的需求。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 怎样自定义Ubuntu Tomcat日志格式
本文地址: https://pptw.com/jishu/725276.html
Ubuntu Strings如何进行日志管理 Ubuntu Tomcat日志中如何记录访问信息

游客 回复需填写必要信息