zez*_*llo 9 python linux logging freebsd python-3.x
我想从python的主脚本中将一些日志信息写入/ var/log中的文件.
当我调用时logger.info("Starting"),我在文件上得到一个PermissionError,这是很正常的,因为/ var/log中的文件属于root,而我的程序不是以root身份运行的.
我当然可以设置/var/log/my.log权限,以便myapp写入它.(例如,设置相同的组).但对我来说这看起来不是一个好习惯:如果我在另一台计算机上安装myapp怎么办?我应该在安装过程中更改日志文件的权限吗?或者还有另一种更通用的方法吗?(就像将日志发送到"系统"的通用方法一样?通用我的意思也是可移植的,什么适用于linux,freebsd等)
虽然我不确定它是否相关,但是对于信息,这里是我的代码的一些部分:
主要脚本:
import logging, logging.config
from lib import settings
settings.init()
logging.config.fileConfig(settings.logging_conf_file)
logger = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)
处理程序匹配settings.logging_conf_file,在日志配置文件中:
[handler_mainHandler]
class=FileHandler
level=INFO
formatter=defaultFormatter
filemode=w
args=('/var/log/myapp.log',)
Run Code Online (Sandbox Code Playgroud)
小智 9
如果syslogd正在您的盒子上运行,您可以尝试使用SysLogHandler来避免文件夹权限问题(https://docs.python.org/2/library/logging.handlers.html#sysloghandler).
要指定类别,需要将facility参数设置为所需,例如LOG_LOCAL5.在这种情况下,它将对应于sys5d的local5.*类别.
当您将facility指定为处理程序参数但不指定文件名时,您需要调整syslog配置以说syslogd将日志记录写入特定文件.在FreeBSD中,syslog conf文件是/etc/syslog.conf(syslog.conf(5)).
您也可以添加syslog映射.到/var/log/all.log来处理来自所有syslog生成器的所有日志.如果有疑问,确定日志记录是否有效以及您的应用程序类别是有帮助的.
对于rsyslogd,可以在这里获得更多信息:如何配置rsyslog以用于SysLogHandler日志记录类?
| 归档时间: |
|
| 查看次数: |
8006 次 |
| 最近记录: |