Masonite 日志
Masonite 日志
简介
日志记录对于任何应用程序来说都是非常关键的部分。Masonite 日志记录程序包允许您查看应用程序抛出的错误,并允许您以几种不同的警报级别记录自己的消息。
Masonite 日志当前包含记录到文件、syslog 和 slack 的功能。
安装
若要使 Masonent 日志记录程序包在您的计算机上启动并运行,必须首先安装该程序包:
$ pip install masonite-logging
然后将服务提供者添加到您的应用程序中:
from masonite.logging.providers import LoggingProvider
# ...
PROVIDERS = [
# ..
# Third Party Providers
LoggingProvider,
#..
]
您可以执行一个命令发布这个提供者,这将会创建您的 config/logging.py
配置文件:
$ craft publish LoggingProvider
记录异常
Masonite 日志程序包将自动向您的 Masonite 应用程序注册一个异常侦听器,并记录您的应用程序在相应通道中遇到的任何异常。
通道
Masonite 日志记录程序包使用通道和驱动程序的概念。内部通道用于创建并传递各种信息以实例化驱动程序。在更高级别,您将主要使用渠道。
开箱即用的有几个不同的通道:single
,stack
,daily
,slack
,syslog
和 terminal
。每个通道将以自己的方式处理日志消息。
单通道
单通道会将所有信息放入「单个」文件中。可以在 config/logging.py
文件的 path
选项中指定此文件的存放路径:
'single': {
# ...
'path': 'storage/logs/single.log'
},
每日通道
每日通道类似于单通道,除了这将基于当天日期创建一个新的日志文件。因此,这将创建类似 10-23-2019.log
和 10-24-2019.log
的日志文件。
此处设置的路径必须是目录,而不是文件的全路径:
'single': {
# ...
'path': 'storage/logs'
},
Slack 通道
Slack 通道将直接向您的 Slack 通道发送消息,并在记录任何消息时直接警报,以便您或您的团队迅速采取行动。
您需要生成一个 Slack 应用程序令牌。可以将其添加到您的 .env
文件中:
SLACK_TOKEN=xoxp-35992....
如果您需要更改任何默认设置(如用户、图标表情符号),都可以在配置文件中设置它们。
'slack': {
# ...
'channel': '#bot',
'emoji': ':warning:',
'username': 'Logging Bot',
'token': env('SLACK_TOKEN', None),
# ...
}
这些选项由您决定。
Terminal 通道
Terminal 通道将仅向终端输出错误。这对于调试很方便,或者在使用 stack
通道时可以作为其他通道的补充。
Stack 通道
当您需要将多个通道组合在一起时,堆栈通道非常有用。也许您想让它同时记录到一个 daily
通道文件,并向你的 slack 组发送消息。您可以通过在 stack
通道选项中指定 channels
来轻松完成此操作。
'stack': {
# ...
'channels': ['daily', 'slack']
},
您可以在这里拥有任意数量的通道。
Syslog
syslog
通道将直接与您的系统级日志记录软件绑定。每个操作系统都有其自己的系统监视类型。
您需要绑定到系统套接字路径。对于每个操作系统和机器,这可能会有所不同,因此请找到您所使用的套接字路径,并将其放入配置选项中:
'syslog': {
# ...
'path': '/var/run/syslog',
}
日志级别
日志级别是您可以在通道上指定的日志级别的等级。从最重要到最不重要的顺序如下:
emergency
alert
critical
error
warning
notice
info
debug
每个通道可以有其自己的最小日志级别。仅当日志消息大于或等于该通道上的最小日志级别时,日志消息才会继续。
例如,如果我们在 daily
通道上有这样的配置:
'daily': {
'level': 'info',
'path': 'storage/logs'
},
仅在日志级别为 notice 或更高时,才将消息发送到此通道。它将忽略所有 debug
级别的日志消息。
日志信息写入
您当然可以编写自己的日志消息。您可以从容器中解析 logger 类,并使用与要为其写入消息的日志级别相等的方法。
from masonite.logging import Logger
def show(self, logger: Logger):
logger.debug('message')
logger.info('message')
logger.notice('message')
logger.warning('message')
# ...
写入到指定的通道
您可以使用 channel
方法轻松地切换通道:
from masonite.logging import Logger
def show(self, logger: Logger):
logger.channel('slack').debug('message')
# ...
时区
默认情况下,Masonite 日志将使用 UTC
时区记录所有时间,但是如果要切换时区,则可以在配置文件中设置:
CHANNELS = {
'timezone': 'America/New_York',
'single': {
# ...
},
现在,与日志记录关联的所有时间戳将使用正确的时区。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。