Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于Java的Logback配置_Java_Spring_Spring Bean_Spring Cloud Sleuth_Spring Logback - Fatal编程技术网

基于Java的Logback配置

基于Java的Logback配置,java,spring,spring-bean,spring-cloud-sleuth,spring-logback,Java,Spring,Spring Bean,Spring Cloud Sleuth,Spring Logback,我一直在使用基于java的通过bean的logback配置。正如所观察到的,配置没有均匀加载。如果有人能指导我解决这个问题,那就太好了。 附上下面的代码 公共类JsonLogAppender{ @Bean("loggerContext") public LoggerContext loggerContext() { return (LoggerContext) LoggerFactory.getILoggerFactory(); } @Bean @DependsOn("loggerCo

我一直在使用基于java的通过bean的logback配置。正如所观察到的,配置没有均匀加载。如果有人能指导我解决这个问题,那就太好了。 附上下面的代码

公共类JsonLogAppender{

@Bean("loggerContext")
public LoggerContext loggerContext() {
    return (LoggerContext) LoggerFactory.getILoggerFactory();
}

@Bean
@DependsOn("loggerContext")
public static Logger rootLogger(LoggerContext loggerContext) {
    Logger rootLogger = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
    rootLogger.setLevel(Level.INFO);
    rootLogger.addAppender(consoleAppender(loggerContext, rootLogger));
    rootLogger.addAppender(tcpSocketAppender(loggerContext, rootLogger));
    return rootLogger;
}

@Bean
protected static ConsoleAppender<ILoggingEvent> consoleAppender(LoggerContext loggerContext, Logger rootLogger) {
    ConsoleAppender<ILoggingEvent> consoleAppender = new ConsoleAppender<>();
    consoleAppender.setContext(loggerContext);
    consoleAppender.setName(CONSOLE_APPENDER_NAME);
    consoleAppender.setEncoder(patternLayoutEncoder(loggerContext));
    consoleAppender.start();
    return consoleAppender;
}

@DependsOn("rootLogger")
public static PatternLayoutEncoder patternLayoutEncoder(LoggerContext loggerContext) {
    PatternLayoutEncoder encoder = new PatternLayoutEncoder();
    encoder.setContext(loggerContext);
    encoder.setPattern(PATTERN);
    encoder.setCharset(Charset.forName(CHARSET));
    encoder.start();
    return encoder;
}

@Bean
@Primary
protected static LogstashTcpSocketAppender tcpSocketAppender(LoggerContext loggerContext, Logger rootLogger) {
    LogstashTcpSocketAppender appender = new LogstashTcpSocketAppender();
    appender.setName(TCP_APPENDER_NAME);
    appender.setContext(loggerContext);
    appender.addDestination(TCP_DESTINATION);
    appender.setEncoder(compositeJsonEncoder(loggerContext, rootLogger));
    return appender;
}

@Bean
protected static LoggingEventCompositeJsonEncoder compositeJsonEncoder(LoggerContext loggerContext, Logger rootLogger){
    LoggingEventCompositeJsonEncoder encoder = new LoggingEventCompositeJsonEncoder();
    encoder.setContext(loggerContext);
    encoder.getProviders().addProvider(new MessageJsonProvider());
    encoder.getProviders().addProvider(new StackTraceJsonProvider());
    encoder.getProviders().addProvider(new LogstashMarkersJsonProvider());
    encoder.getProviders().addProvider(new ThreadNameJsonProvider());
    encoder.getProviders().addProvider(new LoggerNameJsonProvider());
    encoder.getProviders().addProvider(new LogLevelJsonProvider());
    encoder.getProviders().addProvider(new ContextJsonProvider<>());
    encoder.getProviders().addProvider(new MdcJsonProvider());
    encoder.getProviders().addProvider(withPattern(PATTERN, new LoggingEventPatternJsonProvider(), loggerContext));
    encoder.start();
    return encoder;

}

private static AbstractPatternJsonProvider<ILoggingEvent> withPattern(
        String pattern,
        AbstractPatternJsonProvider<ILoggingEvent> provider,
        LoggerContext context
        ) {

    provider.setContext(context);
    provider.setPattern(pattern);
    return provider;
}
@Bean(“loggerContext”)
公共LoggerContext LoggerContext(){
return(LoggerContext)LoggerFactory.getILoggerFactory();
}
@豆子
@DependsOn(“loggerContext”)
公共静态记录器rootLogger(LoggerContext LoggerContext){
Logger rootLogger=loggerContext.getLogger(Logger.ROOT\u Logger\u NAME);
rootLogger.setLevel(Level.INFO);
addAppender(consoleAppender(loggerContext,rootLogger));
addAppender(tcpSocketAppender(loggerContext,rootLogger));
返回根记录器;
}
@豆子
受保护的静态ConsolePender ConsolePender(LoggerContext LoggerContext,Logger rootLogger){
ConsoleAppender ConsoleAppender=新的ConsoleAppender();
consoleAppender.setContext(loggerContext);
consoleAppender.setName(CONSOLE_APPENDER_NAME);
setEncoder(PatternLayoutCoder(loggerContext));
consoleApender.start();
返回控制台暂停器;
}
@DependsOn(“根记录器”)
公共静态模式LayoutCoder模式LayoutCoder(LoggerContext LoggerContext){
PatternLayoutCoder编码器=新PatternLayoutCoder();
编码器.setContext(loggerContext);
编码器。设置模式(模式);
encoder.setCharset(Charset.forName(Charset));
encoder.start();
返回编码器;
}
@豆子
@初级的
受保护的静态日志StatshTCPSocketAppender tcpSocketAppender(LoggerContext LoggerContext,Logger rootLogger){
LogstashTcpSocketAppender APPEDER=新的LogstashTcpSocketAppender();
appender.setName(TCP_appender_NAME);
appender.setContext(loggerContext);
addDestination(TCP_目的地);
setEncoder(compositeJsonEncoder(loggerContext,rootLogger));
返回追加器;
}
@豆子
受保护的静态日志EventCompositeJSONEncoder compositeJsonEncoder(LoggerContext LoggerContext,Logger rootLogger){
LoggingEventCompositeJsonEncoder=新的LoggingEventCompositeJsonEncoder();
编码器.setContext(loggerContext);
encoder.getProviders().addProvider(新消息JSONProvider());
encoder.getProviders().addProvider(新的StackTraceJsonProvider());
encoder.getProviders().addProvider(新的LogstashMarkersJsonProvider());
encoder.getProviders().addProvider(新线程名JSONProvider());
encoder.getProviders().addProvider(新LoggerNameJsonProvider());
encoder.getProviders().addProvider(新的LogLevelJsonProvider());
encoder.getProviders().addProvider(新上下文JSONProvider());
encoder.getProviders().addProvider(新的MdcJsonProvider());
encoder.getProviders().addProvider(withPattern(PATTERN,new LoggingEventPatternJsonProvider(),loggerContext));
encoder.start();
返回编码器;
}
私有静态AbstractPatternJsonProviderWithPattern(
字符串模式,
AbstractPatternJsonProvider提供程序,
LoggerContext上下文
) {
setContext(context);
setPattern(pattern);
退货供应商;
}
}

我只寻找基于java的配置,而不是基于XML的配置(我有一个使用XML的解决方案,它工作得很好)

更新 解决了这个问题,我没有添加@Configuration,它现在可以正常工作了

不删除线程,因为它可能有助于为相应的xml配置寻找基于java的配置的人

@配置丢失, 指示一个类声明一个或多个@Bean方法,并可由Spring容器处理以在运行时为这些Bean生成Bean定义和服务请求