Ste*_*fan 5 java xml log4j jdbc configuration-files
如何将此 log4j2.xml 配置片段转换为 log4j2.properties 格式?
我无法在我的 maven + netbeans 项目中使用 XML 格式,因为我根本无法让 log4j2 解析和响应 log4j2.xml 文件 - 无论我将它放在项目中的哪个位置,log4j2 都会忽略它。
然而 main/resource 中的 log4j2.properties 被解析并响应,所以我 -必须 - 使用 .properties ...:
<JDBC name="databaseAppender" tableName="LOGGING.APPLICATION_LOG">
<ConnectionFactory class="log4j_tutorial.ConnectionFactory"
method="getDatabaseConnection" />
<Column name="EVENT_DATE" isEventTimestamp="true" />
<Column name="LEVEL" pattern="%level" />
<Column name="LOGGER" pattern="%logger" />
<Column name="MESSAGE" pattern="%message" />
<Column name="THROWABLE" pattern="%ex{full}" />
</JDBC>
Run Code Online (Sandbox Code Playgroud)
我通过官方 Apache Maven log4j 工件使用 log4j2 2.10.0。
-正确- log4j2.properties 配置与上述配置 100% 等效吗?
我快要花两天时间来让 JDBC 附加程序正常工作了,所以我认为是时候寻求帮助了。
我当前的 log4j2.properties 文件工作正常,输出到文件和控制台:
appender.file.type = File
appender.file.name = fileAppender
appender.file.fileName = verdi.log
appender.file.layout.type = PatternLayout
appender.file.layout.pattern = %d{YYYY-mm-dd HH:mm:ss.SSS} %-5p %c{1} - %m %n
appender.out.type = Console
appender.out.name = out
appender.out.layout.type = PatternLayout
appender.out.layout.pattern = %d{YYYY-mm-dd HH:mm:ss.SSS} %-5p %c{1} - %m %n
rootLogger.level = INFO
rootLogger.appenderRef.file.ref = fileAppender
rootLogger.appenderRef.out.ref = out
Run Code Online (Sandbox Code Playgroud)
我实际上只是想在 log4j2.properties 文件中添加一个 JDBC 附加程序 - db 表已经创建,并且我已经按照文档实现了 ConnectionSource 接口,并且按照文档,它由连接池数据源支持。然而,Apache 官方文档非常模糊且极其稀疏,具体细节尤其是在配置方面。
我找不到关于指定时 JDBC 附加程序中应包含哪些元素以及必须如何在 log4j2.properties 文件中指定上面明显的 XML 层次结构的官方列表。我能找到的 JDBC 附加程序配置的所有示例都是 - 始终 - log4j2.xml / 基于 XML 的示例。
或者我应该放弃,而是花几天/几周的时间尝试让 log4j XML 配置正常工作?
谢谢!
我试图做同样的事情,但很惊讶地发现在任何地方都没有 JDBCAppender 属性配置的示例。
我发现,由于我在 OSGI 下使用 PAX 日志记录,因此我可以通过设置 .xml 来引用 XML 配置文件org.ops4j.logging.log4j2.config.file
。完成该工作后,我现在回过头来找出了属性方法,所以我认为这就是您正在寻找的:
appender.file.type = File
appender.file.name = fileAppender
appender.file.fileName = verdi.log
appender.file.layout.type = PatternLayout
appender.file.layout.pattern = %d{YYYY-mm-dd HH:mm:ss.SSS} %-5p %c{1} - %m %n
appender.out.type = Console
appender.out.name = out
appender.out.layout.type = PatternLayout
appender.out.layout.pattern = %d{YYYY-mm-dd HH:mm:ss.SSS} %-5p %c{1} - %m %n
appender.db.type = Jdbc
appender.db.name = dbAppender
appender.db.tableName = LOGGING.APPLICATION_LOG
appender.db.cf.type = ConnectionFactory
appender.db.cf.class = log4j_tutorial.ConnectionFactory
appender.db.cf.method = getDatabaseConnection
appender.db.col1.type = Column
appender.db.col1.name = EVENT_DATE
appender.db.col1.isEventTimestamp = true
appender.db.col2.type = Column
appender.db.col2.name = LEVEL
appender.db.col2.pattern = %level
appender.db.col3.type = Column
appender.db.col3.name = LOGGER
appender.db.col3.pattern = %logger
appender.db.col4.type = Column
appender.db.col4.name = MESSAGE
appender.db.col4.pattern = %message
appender.db.col5.type = Column
appender.db.col5.name = THROWABLE
appender.db.col5.pattern = %ex{full}
rootLogger.level = INFO
rootLogger.appenderRef.file.ref = fileAppender
rootLogger.appenderRef.out.ref = out
rootLogger.appenderRef.db.ref = dbAppender
Run Code Online (Sandbox Code Playgroud)
我还没有尝试过这个确切的配置,因为我使用的是 DataSource 而不是 ConnectionFactory,但我认为这在理论上应该可行。我希望它有帮助。
编辑:如果需要数据源而不是连接工厂,请按要求添加数据源定义行:
appender.db.datasource.type = DataSource
appender.db.jndiName = osgi:service/dsName
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7435 次 |
最近记录: |