nohup 命令中的日志文件和 Logback 日志文件

平时会用nohup java -jar your-project-name.jar > app.log 2>&1 &这样的命令来启动项目,将输出重定向到日志文件。

如果不指定输出文件,也就是nohup java -jar your-project-name.jar 2>&1 &,则nohup命令默认会将输出重定向到nohup.out文件。

哪些日志会输出到重定向的文件中

上面的命令会将标准输出(stdout)标准错误(stderr)全部重定向到 app.log 文件中。

  • 任何通过 System.out.println()System.err.println() 打印的内容会写入 app.log。

  • 如果 Logback 配置了控制台输出(ConsoleAppender)(默认情况下 Logback 的 root logger 包含 ConsoleAppender),所有通过 Logback 输出的日志日志也会被重定向到 app.log。

哪些日志会输出到 Logback 日志文件中

如果 Logback 配置了 FileAppender,则通过 Logback 输出的日志会输出到在 Logback 中指定的日志文件中。

如果 Logback 配置了 ConsoleAppender 同时配置了 FileAppender,通过 Logback 打印的日志会同时写入 app.log 和 Logback 配置的日志文件。

最佳实践

生产环境建议关闭ConsoleAppender,在 Logback 中配置文件输出(如RollingFileAppender),按日期或大小滚动日志。

启动命令可简化为:

nohup java -jar your-project.jar > /dev/null 2>&1 &

因为此时 Logback 已独立管理日志,无需 Shell 重定向(/dev/null是 Linux 系统中的一个特殊设备文件,所有写入它的内容会被直接丢弃)。

开发环境建议保留ConsoleAppender,重定向到日志文件。

posted @ 2025-05-14 19:25  Higurashi-kagome  阅读(266)  评论(0)    收藏  举报