相关疑难解决方法(0)

创建一个连接Oracle的日志处理程序?

所以现在我需要创建并实现将用于登录数据库的Python日志记录模块的扩展.基本上我们有几个python应用程序(都在后台运行),当前记录到文本文件的随机混搭.这使得几乎不可能发现某个应用程序是否失败.

给我的问题是将所述日志记录移动到文本文件到oracle DB.这些表已经被定义,并且需要记录的东西,但是现在,我正在寻找添加另一个将记录到数据库的日志记录处理程序.

我使用的是python 2.5.4和cx_Oracle,一般应用程序可以作为服务/守护程序或直接应用程序进行以太运行.

我只是好奇地想知道最好的方法是什么.几个问题:

  1. 如果cx_Oracle发生任何错误,应将这些错误记录在哪里?如果它的下降最好只是让记录器退回到默认文本文件?

  2. 一段时间后,我们开始强制人们使用sys.stderr/stdout.write而不是print,所以最糟糕的情况是我们不会遇到任何关于print被弃用的问题.有没有办法无缝地将所有成千上万的sys.std调用直接传送到记录器中,并让记录器拾取松弛?

  3. 在每条记录的消息之后,脚本是否应自动执行提交?(每秒会有几十个.)

  4. 为日志记录系统实现新处理程序的最佳方法是什么?从基本的Handler类继承似乎是最简单的.

任何想法/建议都会很棒.

python oracle logging

14
推荐指数
1
解决办法
5882
查看次数

使用 fileConfig 在 Python 中配置自定义处理程序

我正在使用配置文件在 Python 应用程序中配置我的记录器。这是文件:

[loggers]
keys=root

[logger_root]
level=INFO
handlers=console

[handlers]
keys=console,file_rotating

[handler_console]
class=StreamHandler
level=WARNING
formatter=console
args=(sys.stderr,)

[handler_file_rotating]
class=TimeRotatingFileHandler
level=DEBUG
formatter=file
args=('../logs/twicker.log', 'd', 1, 5)

[formatters]
keys=console,file

[formatter_console]
format=%(levelname)s - %(message)s

[formatter_file]
format=%(asctime)s - %(levelname)s - %(module)s - %(message)s
Run Code Online (Sandbox Code Playgroud)

我的问题是 TimeRotatingFileHandler。每次运行该应用程序时,都会出现下一个错误:

导入错误:没有名为“TimeRotatingFileHandler”的模块

我做错了什么?我也尝试将类行更改为,class=handlers.TimeRotatingFileHandler但在这种情况下,我收到下一个错误:

导入错误:没有名为“处理程序”的模块

python logging python-3.x

4
推荐指数
2
解决办法
5827
查看次数

Python 记录器文件权限

Ubuntu 服务器 16.04.5 LTS

我有一个 python 脚本,它使用以下代码创建日志文件:

today = datetime.today()
datem = datetime(today.year, today.month, today.day)
logger = logging.getLogger('processImport')
hdlr = logging.FileHandler('{0}myLog_{1}-{2}-{3}.log'.format(myLogFileLocation, datem.year, datem.month, datem.day))
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr) 
logger.setLevel(logging.INFO)
Run Code Online (Sandbox Code Playgroud)

保存日志条目:

logger.info(logMessage)
Run Code Online (Sandbox Code Playgroud)

然后我有一个 cron 作业,它通过执行一个os.remove(fullFilePath)用于删除文件的 python 文件在一段时间后删除旧的日志文件。

但是,执行此 cron 作业时出现权限错误。

OSError: [Errno 13] Permission denied: PathToTheFile\theLogFileName.log
Run Code Online (Sandbox Code Playgroud)

当我检查文件的权限时,它们被设置为:

-rw-r--r-- 1 www-data www-data etc etc
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能使 cron 作业有权删除日志文件?

谢谢你。

python logging

4
推荐指数
1
解决办法
8992
查看次数

标签 统计

logging ×3

python ×3

oracle ×1

python-3.x ×1