繁体   English   中英

使用rsyslog进行Python日志记录

[英]Python logging with rsyslog

我继承了以下python文件:

import logging
from logging.handlers import SysLogHandler

class Logger(object):

  # Return a logging instance used throughout the library
  def __init__(self):
    self.logger = logging.getLogger('my_daemon')

  # Log an info message
  def info(self, message, *args, **kwargs):
    self.__log(logging.INFO, message, *args, **kwargs)

  # Configure the logger to log to syslog
  def log_to_syslog(self):
    formatter = logging.Formatter('my_daemon: [%(levelname)s] %(message)s')

    handler = SysLogHandler(address='/dev/log', facility=SysLogHandler.LOG_DAEMON)
    handler.setFormatter(formatter)

    self.logger.addHandler(handler)
    self.logger.setLevel(logging.INFO)

我看到init方法查找一个名为my_daemon的记录器,我在系统的任何地方都找不到。 我是否必须手动创建文件,如果是,我应该把它放在哪里?

此外, log_to_syslog似乎监听socket /dev/log ,当我运行sudo lsof /dev/log我得到以下内容:

[vagrant@server]$ sudo lsof /dev/log
COMMAND  PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
rsyslogd 989 root    0u  unix 0xffff880037a880c0      0t0 8099 /dev/log

当我查看/etc/rsyslog.conf我看到以下内容:

# rsyslog v5 configuration file

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

所以我在这里有点失落。 我的init函数似乎是在指示python使用一个名为my_daemon的日志文件,这是我在任何地方找不到的,而且/etc/rsyslog.conf似乎在告诉机器使用/ var / log / messages,它不包含任何内容。从我的应用程序记录。

更新:这是我试图记录消息的方式

import os
from logger import Logger

class Server(object):

  def __init__(self, options):
    self.logger = Logger()

  def write(self, data):
    self.logger.info('Received new data from controller, applying')
    print 'hello'

来自server.py的write方法会向屏幕打印'hello',所以我知道我们已经接近了,只是记录器没有按照我的预期进行操作

my_daemon不是日志文件 - 它只是一个开发人员指定的名称,表示应用程序中的“区域”。 这个什么记录仪信息。

log_to_syslog没有侦听套接字 - rsyslog守护程序正在执行此操作。 另外,我没有看到调用log_to_syslog位置 - 是吗? 如果没有调用,那就可以解释为什么syslog中没有看到任何消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM