企业建站用什么好,如何创建自己的网页,国外域名查询网站,my最新域名是什么配置
将日志请求插入到应用程序代码中需要进行大量的计划和工作。
观察表明#xff0c;大约4%的代码专门用于日志记录。因此#xff0c;即使是中等规模的应用程序也会在其代码中嵌入数千条日志记录语句。
考虑到它们的数量#xff0c;必须管理这些日志语句#xff0c;而…配置
将日志请求插入到应用程序代码中需要进行大量的计划和工作。
观察表明大约4%的代码专门用于日志记录。因此即使是中等规模的应用程序也会在其代码中嵌入数千条日志记录语句。
考虑到它们的数量必须管理这些日志语句而不需要手动修改它们。
Log4j 2的配置可以通过以下四种方式之一完成: 通过用XML、JSON、YAML或属性格式编写的配置文件。 通过编程方式创建一个ConfigurationFactory和Configuration实现。 通过编程方式调用Configuration接口中公开的api将组件添加到默认配置中。 以编程方式通过调用内部Logger类上的方法。
本页主要关注通过配置文件配置Log4j。关于以编程方式配置Log4j的信息可以在扩展Log4j 2和程序化Log4j配置中找到。
所有可用的格式在功能上都是相同的。
例如可以使用属性格式重写XML中的配置文件(反之亦然)而不会损失任何功能。
但是使用自然支持嵌套的格式可以更好地捕获Log4j配置的层次结构特性因此XML、JSON和YAML文件通常更易于使用。
注意这与Log4j 1不同。因此公共Log4j 2 API不公开添加、修改或删除追加程序和过滤器的方法也不公开以任何方式操纵配置的方法。
使用XML配置
Log4j可以使用两种XML样式进行配置;简洁严谨。
简洁的语法
简洁的格式使得配置非常容易因为元素名称与其所代表的组件相匹配但是不能用XML模式进行验证。
例如通过在其父appenders元素下声明一个名为Console的XML元素来配置ConsoleAppender。但是元素和属性名不区分大小写。
此外属性既可以指定为XML属性也可以指定为没有属性但有文本值的XML元素。所以
PatternLayout pattern%m%n/和
PatternLayoutPattern%m%n/Pattern
/PatternLayout是等价的。
下面的文件表示XML配置的结构但请注意下面斜体中的元素表示将出现在其位置上的简洁元素名称。
?xml version1.0 encodingUTF-8?;
ConfigurationPropertiesProperty namename1value/propertyProperty namename2 valuevalue2//Propertiesfilter ... /Appendersappender ... filter ... //appender.../AppendersLoggersLogger namename1filter ... //Logger...Root levellevelAppenderRef refname//Root/Loggers
/Configuration请参阅本页中的许多示例以了解附加程序、过滤器和日志记录器声明的示例。
严格的XML
除了上面简明的XML格式之外Log4j还允许以一种更“正常”的XML方式指定配置这种方式可以使用XML Schema进行验证。
这是通过用对象类型替换上面友好的元素名称来实现的如下所示。
例如不是使用名为Console的元素配置ConsoleAppender而是将其配置为带有type属性“Console”的appender元素。
?xml version1.0 encodingUTF-8?;
ConfigurationPropertiesProperty namename1value/propertyProperty namename2 valuevalue2//PropertiesFilter typetype ... /AppendersAppender typetype namenameFilter typetype ... //Appender.../AppendersLoggersLogger namename1Filter typetype ... //Logger...Root levellevelAppenderRef refname//Root/Loggers
/Configuration下面是使用严格格式的样例配置。
?xml version1.0 encodingUTF-8?
Configuration statusdebug stricttrue nameXMLConfigTestpackagesorg.apache.logging.log4j.testPropertiesProperty namefilenametarget/test.log/Property/PropertiesFilter typeThresholdFilter leveltrace/AppendersAppender typeConsole nameSTDOUTLayout typePatternLayout pattern%m MDC%X%n/FiltersFilter typeMarkerFilter markerFLOW onMatchDENY onMismatchNEUTRAL/Filter typeMarkerFilter markerEXCEPTION onMatchDENY onMismatchACCEPT//Filters/AppenderAppender typeConsole nameFLOWLayout typePatternLayout pattern%C{1}.%M %m %ex%n/!-- class and line number --FiltersFilter typeMarkerFilter markerFLOW onMatchACCEPT onMismatchNEUTRAL/Filter typeMarkerFilter markerEXCEPTION onMatchACCEPT onMismatchDENY//Filters/AppenderAppender typeFile nameFile fileName${filename}Layout typePatternLayoutPattern%d %p %C{1.} [%t] %m%n/Pattern/Layout/Appender/AppendersLoggersLogger nameorg.apache.logging.log4j.test1 leveldebug additivityfalseFilter typeThreadContextMapFilterKeyValuePair keytest value123//FilterAppenderRef refSTDOUT//LoggerLogger nameorg.apache.logging.log4j.test2 leveldebug additivityfalseAppenderRef refFile//LoggerRoot leveltraceAppenderRef refSTDOUT//Root/Loggers/Configuration