在 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 系统中程序的日志级别。