跳至主要内容

使用标准Python日志模块管理Mercurial日志

项目描述

通过logging模块使用Mercurial日志

此扩展将大多数针对终端的用户反馈重定向到标准库的Python logging模块。

这主要用于服务器端用例,不太可能对客户端操作有用。

事实上,在服务器上,许多消息只对系统管理员有用,如果被客户端看到,将是不想要的干扰。一个值得注意的例外是ui.status,它实际上用于通过网络报告有意义的消息。

使用日志比使用如ui.debug这样的标志并将stderr重定向更加健壮和灵活。它还提供了与Sentry(见下文)的集成。可以直接使用具有logging处理程序的其他许多日志聚合系统。

在撰写本文时,它有一个副作用是禁用其他用于日志的扩展,如blackbox

安装

使用pippip3安装

   pip install hgext-loggingmod
   pip3 install "hgext-loggingmod>=0.2.0"

然后,在你的HGRC中包括以下内容

[extensions]
loggingmod =

配置

所有参数都应在[logging] hgrc部分中设置。

基本配置

这些是首先应用的,主要使用logging.basicConfig

示例(这些是默认值)

[logging]
level = info
format = [%(asctime)s] [%(process)d] [%(levelname)s] [%(name)s] %(message)s
hg_format = [%(asctime)s] [%(process)d] repo:%(repo)s [%(levelname)s] [%(name)s] %(message)s

将日志记录到文件

[logging]
file = /var/log/mercurial.log

格式

format字符串是一个常规的日志格式字符串,有关可以使用的键的完整列表,请参阅LogRecord属性

hg_format字符串也是一个常规的日志格式字符串,但它还可以使用repo参数:当前存储库在文件系统中的完整路径,如果与给定的日志记录相关。此格式在hg日志记录器和其子项(如hg.logginghg.discovery等)中使用。

默认情况下,时间将包括时区。

通过文件进行高级配置

JSON

这是最完整的,因为它利用了dictConfig()

[logging]
config.json = /etc/hg-logging.json

尽管如此,上面执行的基本配置首先完成,但如果使用incremental关键字,则会被清除。

INI

这被转发到fileConfig()

[logging]
config.ini = /etc/hg-logging.ini

与Sentry一起使用

先决条件

应可以从Mercurial进程导入sentry_sdk包,请参阅Sentry安装说明

根据我们的经验,pip install sentry-sdk还不够,我们还必须安装Brotli。您的结果可能会有所不同。

如有疑问,请先测试

激活

要将日志记录转发到Sentry,只需在hgrc中指定DSN

[logging]
sentry.dsn = https://<key>@sentry.example.net/<project>

警告:不要在上面的DSN中使用引号。

基本配置

Sentry默认集成捕获所有日志调用,并且与常规logging配置正交,除了日志记录器级别。

此扩展有几个可调整的旋钮。以下是一个示例

[logging]
sentry.ignore_loggers = discovery extension

# these are the default values:
sentry.event_level = error
sentry.breadcrumb_level = info

精细配置

而不是像上面那样使用平坦配置,您可以通过使用config.json指令和Sentry的处理程序进行显式配置来禁用全局集成。

[logging]
config.json = /etc/hg-config-with-sentry.conf
sentry.dsn = https://<key>@sentry.example.net/<project>
sentry.default_integration = false

当然,这也禁用了sentry.event_levelsentry.breadcrumbs_level配置项。

在撰写本文时,这些处理程序是

  • sentry_sdk.integrations.logging.EventHandler
  • sentry_sdk.integrations.logging.BreadCrumbHandler

另请参阅:Sentry文档中的处理程序类

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面