4.1 日志级别列表
您编写了程序,将其上传到服务器,然后您立即开始有疑问:
- 如何确保
debug()
该方法在工作时不起作用production
? - 日志中的信息太多,是否只留下错误信息?
- 如何查看应用程序某一部分的详细日志?
当然,日志的创建者几十年前就面临过同样的事情。我不会告诉你这个问题在C语言中是如何解决的,但是在Java语言中却非常漂亮地解决了。
日志在将信息写入. 您可以通过设置日志记录级别非常快速地减少/增加日志的详细信息。下表描述了这些级别:
等级 | 笔记 | |
---|---|---|
1个 | 全部 | 记录所有消息 |
2个 | 痕迹 | 调试时的小提示 |
3个 | 调试 | 对调试很重要的消息 |
4个 | 信息 | 简单的消息 |
5个 | 警告 | 只写致命、错误和警告 |
6个 | 错误 | 只写错误和致命错误 |
7 | 致命的 | 只写致命错误 |
8个 | 离开 | 不要将消息写入日志 |
过滤消息时使用这些级别。如果您将日志记录级别设置为WARN
,那么所有不重要的消息都WARN
将被丢弃:TRACE
、DEBUG
、INFO
。如果将过滤级别设置为FATAL
,则甚至ERROR
。
还有两个严重级别用于过滤 - 这OFF
(丢弃所有消息)和ALL
- 写入所有消息(不丢弃任何内容)。
4.2 日志设置示例
让我们看一个简单的日志设置示例。为此,我们需要 log4j.properties 文件,该文件可以放在资源文件夹中。让我们向其中添加以下内容:
# Root logger option
log4j.rootLogger=WARN, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}
在第一行中,我们设置了日志记录级别 - WARN
。这意味着写入带有状态的记录器的消息DEBUG
将INFO
被忽略。
- 指定我们将使用什么类型的 appender -
ConsoleAppender
- 指定我们将写入日志的位置 -
System.out
- 我们设置将控制记录格式的类 -
PatternLayout
- 设置所有消息的录音格式 - 日期和时间
4.3 常见的日志记录错误
还有一点很重要——日志记录中的常见错误。做某事的选项不多,但可以确定几个常见的错误:
- 太多的记录。您不应该记录每一步,这在理论上可能很重要。有一个规则:日志可以加载性能不超过 10%。否则会有性能问题。
- 将所有数据记录到一个文件中。这将导致它在某些时候很难读/写,更不用说某些系统上有文件大小限制。
- 使用错误的日志级别。每个级别的日志记录都有明确的界限,应该得到尊重。如果边界模糊,您可以就使用哪个级别达成一致。
GO TO FULL VERSION