商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Ubuntu系统中Java日志管理方法

Ubuntu系统中Java日志管理方法

  发布于2026-07-04 阅读(0)

扫一扫,手机访问

Ubuntu系统中Ja va日志管理,这事儿说难不难,但真要上手,从框架选型到轮转配置再到集中化方案,每一步都有不少坑。今天就把这些经验系统地捋一遍,从基础到进阶,一次性讲清楚。

Ubuntu系统中Ja va日志管理方法

一、常见Ja va日志框架及配置

选择日志框架是第一步。目前市面上主流的就那么几个:Log4j功能灵活但已不是最新,SLF4J只是个门面,得搭配Logback或Log4j等实现;Logback算是Log4j的继任者,性能和功能都更胜一筹;如果只是简单场景,ja va.util.logging(JDK自带的)也能凑合用。配置文件是核心,通常放在项目的src/main/resources目录下,或者系统级路径比如/etc/

  • Log4j:通过log4j.propertieslog4j.xml配置。可以指定输出路径(如logs/app.log)、输出格式(如%d{ISO8601} [%t] %-5p %c - %m%n)、滚动策略(如MaxFileSize=10MBMaxBackupIndex=5)。
  • Logback:配置文件名是logback.xml,支持异步日志这类高级功能。一个典型的配置示例如下:

    
        
            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
        
    
    
        logs/app.log
        
            logs/app.%d{yyyy-MM-dd}.log
            30 
        
        
            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
        
    
    
        
        
    

  • SLF4J:不需要单独的配置文件,日志行为完全由底层的实现(如Logback)决定。代码里通过LoggerFactory.getLogger(Class)获取日志记录器就行。

二、日志文件存储位置

日志文件放哪儿,完全由框架配置说了算。常见的几个路径:

  • 项目自定义目录:比如/path/to/project/logs/app.log,直接在框架配置文件里指定。
  • 系统默认日志目录:例如/var/log/ja va/(系统级Ja va应用日志),或者/var/log/tomcatX/(Tomcat下的Ja va应用日志,X是版本号)。
  • 应用程序工作目录:通过System.getProperty("user.dir")获取当前目录,日志通常放在该目录下的logs子目录里。

三、日志查看与搜索命令

Ubuntu下查看和管理日志的命令行工具相当丰富:

  • 实时查看tail -f /path/to/logfile.log,实时输出最新内容,适合监控。
  • 搜索特定内容grep "ERROR" /path/to/logfile.log,筛选包含“ERROR”的行,支持正则。
  • 分页查看less /path/to/logfile.log,逐页查看大文件,支持上下翻页和/keyword搜索。
  • 查看系统日志journalctl -u serviceName,查看指定服务(如tomcat)的日志,前提是系统使用systemd。

四、日志轮转配置(防止日志过大)

日志文件如果不加控制,很快就会撑爆磁盘。好在Ubuntu默认安装了Logrotate这个轮转工具,可以自动压缩和删除旧日志。

  • 安装Logrotate:如果没装,执行sudo apt update && sudo apt install logrotate
  • 创建配置文件:在/etc/logrotate.d/下新建一个应用专属文件,比如my-ja va-app。示例如下:
/var/log/myapp/*.log {
    daily          # 每天轮转一次
    rotate 7       # 保留最近7份日志
    compress       # 压缩旧日志(.gz格式)
    delaycompress  # 延迟压缩,避免当天日志被压缩
    missingok      # 日志文件不存在时不报错
    notifempty     # 日志为空时不轮转
    create 0640 root root  # 创建新日志文件的权限和所有者
    sharedscripts  # 所有日志轮转完成后执行脚本
    postrotate
        /bin/kill -HUP $(cat /var/run/myapp.pid 2>/dev/null) 2>/dev/null || true  # 通知应用重新打开日志文件
    endscript
}
  • 手动测试:执行sudo logrotate -vf /etc/logrotate.d/my-ja va-app,强制运行并查看效果。

五、集中化日志管理(ELK Stack)

如果系统是分布式的,或者有多个应用,分散的日志管理起来太痛苦。这时候ELK Stack(Elasticsearch + Logstash + Kibana)就是标准答案,可以实现集中收集、存储、分析和可视化。

  • 安装组件:通过Ubuntu默认仓库安装:sudo apt update && sudo apt install elasticsearch logstash kibana
  • 配置Logstash:创建一个logstash.conf文件,定义输入(比如用file插件读取Ja va日志)、过滤(用grok解析日志格式)、输出(存到Elasticsearch)。示例如下:
input {
    file {
        path => "/var/log/myapp/*.log"
        start_position => "beginning"
    }
}
filter {
    grok {
        match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} [%{THREAD:thread}] %{LOGLEVEL:loglevel} %{JA VACLASS:class} - %{GREEDYDATA:logmessage}" }
    }
    date {
        match => [ "timestamp", "ISO8601" ]
    }
}
output {
    elasticsearch {
        hosts => ["localhost:9200"]
    }
    stdout { codec => rubydebug }  # 控制台输出,调试用
}
  • 启动服务:依次启动三个组件:sudo systemctl start elasticsearch && sudo systemctl start logstash && sudo systemctl start kibana
  • 访问Kibana:浏览器输入http://localhost:5601,配置索引模式(比如logstash-*),就能可视化和分析日志了。
本文转载于:https://www.yisu.com/ask/53181456.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注