gpt4 book ai didi

java - 将 SNMP4J-Agent 与 Logback 配置结合使用

转载 作者:行者123 更新时间:2023-12-02 01:29:36 31 4
gpt4 key购买 nike

我的其余代码有一个 logback 配置,我现在使用 SNMP4J-Agent。当我启动这个代理时,我必须提供一个 logFactory,它似乎只接受 Log4J。我想与我的应用程序的其余部分一起登录。

  LogFactory.setLogFactory(new Log4jLogFactory());
org.apache.log4j.BasicConfigurator.configure();
LogFactory.getLogFactory().getRootLogger().setLogLevel(LogLevel.DEBUG);

我发现我可以将自定义附加程序传递给 log4j 配置,因此我尝试创建一个附加程序,但出现错误。请帮忙。

private static org.apache.log4j.Appender snmpAppender =
(org.apache.log4j.Appender) Logger.getRootLogger().getAppender("SNMP");

static {
LogFactory.setLogFactory(new Log4jLogFactory());
org.apache.log4j.BasicConfigurator.configure(snmpAppender);
LogFactory.getLogFactory().getRootLogger().setLogLevel(LogLevel.DEBUG);
}

我的附加程序类的片段:

public class SnmpAppender extends AppenderBase<ILoggingEvent> {

private final ConcurrentMap<String, ILoggingEvent> eventMap
= new ConcurrentHashMap<>();

private String prefix;

@Override
protected void append(final ILoggingEvent event) {
if (prefix == null || "".equals(prefix)) {
addError("Prefix is not set for MapAppender.");
return;
}

eventMap.put(prefix + System.currentTimeMillis(), event);
}

我的 logback 配置片段:

<appender name="SNMP-Agent" 
class="ca.bat.snmp.SnmpAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator
class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
<marker>SNMP</marker>
</evaluator>
<onMismatch>DENY</onMismatch>
<onMatch>NEUTRAL</onMatch>
</filter>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
<immediateFlush>true</immediateFlush>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/snmp/snmp.%d{yyyy-MM-
dd}.log.zip</fileNamePattern>
<maxHistory>90</maxHistory>
</rollingPolicy>
</appender>

这是我得到的:

log4j:WARN No appenders could be found for logger (org.snmp4j.security.Salt).
log4j:WARN Please initialize the log4j system properly.

我的 Gradle :

dependencies {
[...]
compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
compile group: 'org.snmp4j', name: 'snmp4j-agent', version: '2.6.3'
}

最佳答案

您认为 SNMP4J(-Agent) 仅支持 Log4J 的看法是不正确的。与创建自己的 Log4J-Appender 相比,扩展 SNMP4J LogFactory 接口(interface)并实现您自己的日志记录桥作为“MyLogBackLogFactory”更容易。然后调用

LogFactory.setLogFactory(new MyLogBackLogFactory());

在调用任何其他 SNMP4J(-Agent) 代码之前。

关于java - 将 SNMP4J-Agent 与 Logback 配置结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57560157/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com