格式化日志的最佳做法是什么?

And*_*ith 50 standards logging

我正在编写一个蜜罐软件,它将广泛记录与它的交互,我打算登录明文.log文件.

我有两个问题,来自对服务器日志记录不太熟悉的人.

  1. 首先,我如何分解我的日志文件,我假设在运行一个月后我不想要一个大.log文件,我是按天,月,年来做的吗?它有一些标准吗?

  2. 每行的格式,我有一个标准分隔符,即*, - ,+,什么?在任何地方都有标准(我的谷歌搜索没有带来太多)?

Pie*_*tte 29

我喜欢这种日志文件的格式:

$ python simple_logging_module.py
2005-03-19 15:10:26,618 - simple_example - DEBUG - debug message
2005-03-19 15:10:26,620 - simple_example - INFO - info message
2005-03-19 15:10:26,695 - simple_example - WARNING - warn message
2005-03-19 15:10:26,697 - simple_example - ERROR - error message
2005-03-19 15:10:26,773 - simple_example - CRITICAL - critical message
Run Code Online (Sandbox Code Playgroud)

这是来自python的日志记录模块.我通常每天都有一个文件,每个月有一个文件夹,每年有一个文件夹.您将获得无法正确编辑的大型日志文件.

logs/
  2009/
    January/
     01012009.log
     02012009.log
     ...
    February/
     ...
  2008/
   ...
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这个,我绝对讨厌没有日期/时间的日志文件. (5认同)
  • 这是一篇旧文章,但在搜索有关日志记录的最佳实践时,它会出现在顶部。我发现这个资源我认为也增加了讨论:https://reflectoring.io/logging-format/。推荐围绕分隔符的讨论,也喜欢用户对日志内容和结构的想法。 (2认同)

Mic*_*der 19

这种日志记录没有标准.滚动,文件布局,这一切都取决于你需要什么.总的来说,我面临三个主要场景:

  • 全部在一个文件中.似乎不适合你.
  • 固定尺寸滚动.在当前文件大于定义值时,在创建新日志文件时定义大小.通常在大多数log4anything包装中都有支持.
  • 总定制滚动.我见过像这样的布局
    • 每天都有它自己的目录,格式为YYYYMMDD.如果您不登录日志,请考虑目录布局,如YYYY\MM\YYYYMMDD,如其他答案所示.
    • 在此目录中,应使用固定大小的滚动.
    • 每个文件的名称都logfile_yyyymmdd_ccc.logccc增加数量.添加文件名的时间也是一个好主意(例如,轻松判断您每分钟生成的日志数)
    • 为了节省空间,每个日志都会自动压缩压缩.
    • 最后3天总是保持未压缩状态,因此您可以使用UNIX文本工具快速访问.

这个自定义的看起来像这样

logs/
  20090101/
     logfile_20090101_001.zip
     logfile_20090101_002.zip
     ...
  20090102/
     logfile_20090102_001.zip
     logfile_20090102_002.zip
   logfile_20090101_001.log
   logfile_20090101_002.log
   logfile_20090102_001.log
   logfile_20090102_002.log

良好的日志记录还有一些很好的做法:

  • 始终在日志文件名中保留日期
  • 始终在日志文件名中添加一些名称.它将帮助您将日志文件与系统的不同实例区分开来.
  • 始终记录每个日志事件的时间和日期(最好是毫秒分辨率).
  • 始终将您的日期存储为YYYYMMDD.到处.在filename中,在logfile中.它有助于排序.允许使用一些分隔符(例如2009-11-29).
  • 通常避免将日志存储在数据库中.In是日志架构中的另一个故障点.
  • 如果您有多线程系统,请始终记录线程ID.
  • 如果您有多进程系统,则始终记录进程ID.
  • 如果您有许多计算机始终记录计算机ID.
  • 确保以后可以处理日志.只需尝试将一个日志文件导入数据库或Excel.如果时间超过30秒,则表示您的日志记录错误.这包括:
    • 选择良好的内部日志格式.我更喜欢空间分隔,因为它适用于Unix文本工具和Excel.
    • 选择良好的日期/时间格式,以便您可以轻松导入到某些SQL数据库或Excel中以进一步处理.