在 Debian 系统中,nohup 命令用于在后台运行程序,即使关闭终端也不会中断。默认情况下,nohup 会将输出重定向到 nohup.out 文件中,但不会对日志进行详细的级别控制。
如果你希望设置日志级别,通常需要结合使用其他工具或方法,比如使用 syslog、rsyslog 或者自定义日志记录机制。以下是一些常见的方法:
syslog 或 rsyslog配置 rsyslog:
/etc/rsyslog.conf 或 /etc/rsyslog.d/50-default.conf 文件。例如,假设你想将某个程序的日志级别设置为 info 并输出到 /var/log/myapp.log:
if $programname == 'myapp' then /var/log/myapp.log
& stop
然后重启 rsyslog 服务:
sudo systemctl restart rsyslog
在程序中配置日志级别:
log4j、logback、python logging 等),可以在程序内部设置日志级别。例如,使用 Python 的 logging 模块:
import logging
logging.basicConfig(filename='/var/log/myapp.log', level=logging.INFO)
nohup 和自定义脚本你可以编写一个简单的脚本来启动程序,并将输出重定向到不同的日志文件,同时设置日志级别。
例如,创建一个 start_myapp.sh 脚本:
#!/bin/bash
# 设置日志级别
LOG_LEVEL="INFO"
# 启动程序并将输出重定向到日志文件
nohup myapp --log-level $LOG_LEVEL > /var/log/myapp.log 2>&1 &
然后赋予脚本执行权限并运行:
chmod +x start_myapp.sh
./start_myapp.sh
systemd 服务如果你希望更精细地控制程序的启动和日志记录,可以考虑使用 systemd 服务。
创建 systemd 服务文件:
创建 /etc/systemd/system/myapp.service 文件:
[Unit]
Description=My Application
[Service]
ExecStart=/path/to/myapp --log-level INFO
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myapp
Restart=always
[Install]
WantedBy=multi-user.target
重新加载 systemd 配置并启动服务:
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
通过这些方法,你可以更灵活地设置和管理 Debian 系统中程序的日志级别。