我有一个工作正常的Log4j1和Log4j2设置,并且已将最新的Authorize.net的SDK集成到我的应用程序中。该SDK是为使用Log4j1而构建的,我再也无法通过Log4j2属性文件控制其输出。最初是在Log4j1中完成的,方法是将SDK中的以下语句直接添加到我的Log4j1属性文件中:
log4j.logger.net.authorize.util.HttpClient=FATAL, S
log4j.logger.net.authorize.sim.TransactionTest=FATAL, S
Where S is a console appender
我尝试了许多配置,其中最简单的方法是将上述语句包含到Log4j2属性文件中,但这没有用。我也尝试将“ log4j”替换为log4j2”。
log4j2.logger.net.authorize.util.HttpClient = FATAL, STDOUT
log4j2.logger.net.authorize.sim.TransactionTest = FATAL, STDOUT
我尝试完全删除“ log4j”,但是抛出异常,表明记录器“ net”没有名称属性。
logger.net.authorize.util.HttpClient = FATAL, STDOUT
logger.net.authorize.sim.TransactionTest = FATAL, STDOUT
这似乎忽略了“ net”之后的其余记录器名称。因此我添加了以下语句,但异常消失了,但仍然无法正常工作。
loggers = net.authorize.util.HttpClient
我还尝试使用这些语句控制日志级别。
logger.net.authorize.util.HttpClient.name = ANet
logger.net.authorize.util.HttpClient.level = FATAL
我很困惑如何在Log4j2属性文件中指定其他记录器。任何帮助将不胜感激。
这是我当前的log4j2文件:
# Tell the root logger what appenders and level to use
rootLogger.level = DEBUG
rootLogger.appenderRefs = console, rolling
rootLogger.appenderRef.console.ref = STDOUT
rootLogger.appenderRef.rolling.ref = FILE
appenders = console, rolling
##### Authorize.net #####
log4j.logger.net.authorize.util.HttpClient = FATAL, STDOUT
log4j.logger.net.authorize.sim.TransactionTest = FATAL, STDOUT
##### Console Appender #####
appender.console.name = STDOUT
appender.console.type = Console
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss z} %-5p %m%n
##### File Appender #####
appender.rolling.name = FILE
appender.rolling.type = RollingFile
appender.rolling.fileName = mylog.log
appender.rolling.filePattern = mylog.log
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss z} %-5p %m%n
appender.rolling.layout.type = PatternLayout
appender.rolling.policies.type = Policies
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size = 10MB
答案 0 :(得分:0)
事实证明,Authorize.Net使用commons-logging来抽象log4j2提供的记录器实现。 commons-logging通过一个非常具体的过程来确定要使用的记录器实现,如果找不到,则使用JDK的SimpleLogger。在此特定情况下,我缺少一个关键的log4j2 jar文件,该文件提供了commons-logging log4j-jcl.jar所需的String构造函数。在将其与api和核心jar一起包含在类路径中之后,我便能够控制Authorize.net的日志记录。