我担心我的应用程序可能会为某些用户生成大量日志。
- 我应该考虑什么才能不影响可用性(支持滚动等)?
- 应用程序是否有一种标准方法来查询日志记录级别配置(以便不会浪费资源来写入禁用的记录器)?
答案1
如果您要以除 之外的任何优先级生成大量数据debug
,最好将默认配置记录到文件而不是系统日志,或者至少提供这种可能性。如果这些日志是调试日志,则默认情况下它们应该关闭,并且仅当使用选项(在命令行或配置文件中)调用应用程序以告诉其打印调试日志时才打印。
如果从应用程序的用途来看,它显然会生成大量日志,那也没关系。
您无法从应用程序端可靠地查询日志记录级别配置。例如,某些系统远程登录;那么配置将在另一台机器上。即使位于同一台计算机上,非 root 用户也可能无权读取日志记录配置。如果您的应用程序可以配置为生成合理或大量的日志,则由应用程序配置来确定这一点。
如果您通过 syslog 工具进行日志记录,则无需执行任何操作来支持日志轮换。如果您记录到文件,则需要为应用程序提供一种关闭并重新打开其日志文件的方法。为此,您可以使用 SIGUSR1 或 SIGUSR2,如果您不将其用作终止信号,甚至可以使用 SIGHUP(对于守护程序,即不是从终端运行的程序,SIGHUP 通常意味着“重新加载您的配置”,其中可以包括重新打开日志文件)。日志轮换程序首先会将日志移动到不同的名称,然后发送信号告诉您的应用程序创建一个新的日志文件。