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,重定向到日志文件。
浙公网安备 33010602011771号