标签: slf4j

Spring集成中限制jsch的输出

我试图限制 Spring Boot 应用程序中 com.jcraft.jsch 包的输出。我的应用程序使用 Spring Intgration 并具有定义以下日志级别的 log4j.properties 文件

# Root logger option
log4j.rootLogger=DEBUG
log4j.category.com.jcraft.jsch=ERROR
log4j.category.org.springframework.integration.file=ERROR
Run Code Online (Sandbox Code Playgroud)

尽管如此,我还是从该包中收到了大量信息级别的消息......我希望它能将其过滤掉。我按照此链接底部的简短说明进行操作

任何知道为什么我仍然被通讯淹没的人。jsch 的详细信息?

2015-05-21 11:12:55.750  INFO 10684 --- [ask-scheduler-1] com.jcraft.jsch                          : aes256-cbc is not available.
2015-05-21 11:12:55.750  INFO 10684 --- [ask-scheduler-1] com.jcraft.jsch                          : aes192-cbc is not available.
2015-05-21 11:12:55.750  INFO 10684 --- [ask-scheduler-1] com.jcraft.jsch                          : CheckKexes: diffie-hellman-group14-sha1
2015-05-21 11:12:55.770  INFO 10684 --- [ask-scheduler-1] com.jcraft.jsch                          : SSH_MSG_KEXINIT sent
2015-05-21 11:12:55.770  INFO 10684 --- [ask-scheduler-1] com.jcraft.jsch                          : SSH_MSG_KEXINIT received
Run Code Online (Sandbox Code Playgroud)

我使用 log4j.1.2.17 和 …

log4j jsch spring-integration slf4j

5
推荐指数
2
解决办法
3265
查看次数

Logback 滚动后不写入新文件

我已经在我们的项目上创建了一个 logback 并使用 org.slf4j.LoggerFactory 和 org.slf4j.Logger 库。但自从我们开始使用它以来,我们仍然面临着滚动的问题。问题是,日志文件翻转后,不是将日志保存在新创建的文件中,而是将日志保存在翻转的文件中。下面是我的 logback.xml 配置。例如,它将记录到 proj.2015-05-25.log,而不是登录到 proj.log。有什么建议来解决这个问题吗?

<file>/home/proj/proj-conf/logs/proj.log</file>
<encoder>
  <pattern>%d %-5p %c{1} - %m%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  <!-- daily rollover -->
    <fileNamePattern>/home/proj/proj-conf/logs/proj.%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>

    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>5MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>

  <!-- keep 30 days' worth of history -->
  <maxHistory>30</maxHistory>
</rollingPolicy>
Run Code Online (Sandbox Code Playgroud)

##

java logging logback slf4j

5
推荐指数
0
解决办法
529
查看次数

日志中漂亮的打印 spring-ws 肥皂消息

我们正在调试一些 spring-ws 肥皂网络服务,并使用本文中突出显示的 log4j 设置输出肥皂请求:

/sf/answers/1232393151/

我想漂亮地打印发送到日志的肥皂消息。有谁知道这是否可以做到,如果可以的话该怎么做?

java soap log4j spring-ws slf4j

5
推荐指数
1
解决办法
1317
查看次数

Spring boot 中错误和调试日志的不同文件

在 application.properties 中的logging.file=myapplication.log中设置日志文件将打印所有日志,但是我想要两个单独的日志文件用于错误信息,我该如何实现这一点。

我已经提到了这个问题

但无法弄清楚

logging logback slf4j spring-boot

5
推荐指数
0
解决办法
1243
查看次数

为什么 log4j 2 不记录应用程序和单元测试的方法名称

我的 Log4j2 配置文件如下所示:

<Appenders>
  <RollingRandomAccessFile name="APP_LOG_APPENDER" fileName="${sys:baseLogPath}/${appLogFileName}.log"
            filePattern="${sys:baseLogPath}/backups/$${date:yyyy-MM}/${appLogFileName}-%d{yyyy-MM-dd}-%i.log.gz" immediateFlush="false">
    <PatternLayout>
      <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [Thread: %t] %level [%c][%M] - %msg%n</Pattern>
    </PatternLayout>
    <Policies>
      <TimeBasedTriggeringPolicy />
      <SizeBasedTriggeringPolicy size="50 MB" />
    </Policies>
    <DefaultRolloverStrategy max="20"/>
  </RollingRandomAccessFile>
</Appenders>
<Loggers>
  <Root level="debug" additivity="false">
    <AppenderRef ref="APP_LOG_APPENDER" />
  </Root>
</Loggers>
Run Code Online (Sandbox Code Playgroud)

类中的记录器语句MyClass

public class MyClass {
  private final static org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(MyClass.class);
  public void someMethod() {
    logger.debug("Some sample string at DEBUG level....");
    logger.info("Some sample string at INFO level....");
    logger.warn("Some sample string at WARN level....");
    logger.error("Some sample string at ERROR …
Run Code Online (Sandbox Code Playgroud)

java slf4j log4j2

5
推荐指数
1
解决办法
7180
查看次数

ApacheKafka Appender 日志返回

我刚刚开始使用 ApacheKafka。我设置了整个事情,现在我尝试在现有的 Java 应用程序中引入 Kafka 通过日志附加程序发送日志。该应用程序使用 Logback 作为记录器库。所以,我想,这让我无法使用kafka.producer.KafkaLog4jAppender?还有不兼容的吗?我正进入(状态 IncompatibleClassException。也许还有其他解决方案吗?多谢!!

java logback slf4j apache-kafka

5
推荐指数
1
解决办法
1万
查看次数

在处理开始时而不是在结束时调用 MDC.clear() 有什么缺点吗?

我喜欢在我的应用程序中使用 MDC 日志记录字段,因为它使查找所有相关日志行变得更加容易。我还发现在处理开始时清除 MDC 上下文要容易得多,因为我知道应用程序的入口点在哪里,但有许多可能的异常路径,我自己或其他开发人员可能忘记调用 MDC.clear( )。

所以我的问题是,我这样做有什么缺点吗?根据经验,始终在处理开始和结束时清除上下文。

为了清楚起见,如果我从头开始编写代码,我会这样做:

MDC.put();
try {
...
} finally {
  MDC.clear();
}
Run Code Online (Sandbox Code Playgroud)

但有时我必须使用基类或库中没有任何 MDC 相关代码的内容,因此我按照我所描述的方式进行操作,因为我不想从库中复制基类只是为了添加几行 MDC 代码...

java logging slf4j mdc

5
推荐指数
1
解决办法
8360
查看次数

如何使特定库的记录器静音

我在代码中使用的库具有以下 logback.xml

<configuration>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%date - %-5p %t %-25logger{0} %F:%L %m%n</pattern>
    </encoder>
  </appender>

  <root level="INFO">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我无法控制这个 .xml 文件,因为库作者拥有这个文件,而我只是将她的库用作 jar 文件。

现在,当我使用该库作为 jar 时,我在输出中看到很多“INFO”语句。我想仅从该库关闭记录器的输出。

我不想全局关闭我的应用程序(或提高日志的严重性)。我只想让这个库的日志保持沉默。

我怎样才能做到这一点?

logback slf4j

5
推荐指数
2
解决办法
5194
查看次数

关于 slf4j 和 logback-classic 传递依赖的明确答案

我真的很努力地将 logback-classic 的加载作为传递依赖问题。我遵循了 stackoverflow 上的建议,但是,它不断重复出现。

我使用 Maven 排除来尝试控制它,它根本没有出现在我的 pom 依赖关系层次结构中。但它仍然被加载!

这是我的运行时跟踪

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/david/.m2/repository/de/ruedigermoeller/kontraktor-http/3.33/kontraktor-http-3.33.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/david/.m2/repository/ch/qos/logback/logback-classic/1.2.1/logback-classic-1.2.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
W 13:22:24:837 : DispatcherThread 1 : DispatcherThread : 
java.lang.NoSuchMethodError: org.slf4j.impl.StaticLoggerBinder.getLoggerFactoryClassStr()Ljava/lang/String;
at org.slf4j.LoggerFactory.reportActualBinding(LoggerFactory.java:271)
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:143)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:120)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:331)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:283)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:304)
at org.quartz.impl.StdSchedulerFactory.<init>(StdSchedulerFactory.java:284)
at org.quartz.impl.StdSchedulerFactory.getDefaultScheduler(StdSchedulerFactory.java:1539)
at uk.co.example.ExampleEwsService.init(ExampleEwsService.java:296)
Run Code Online (Sandbox Code Playgroud)

部分问题在于 Kontraktor 框架重写了 StaticLoggerBinder.getLoggerFactoryClassStr 方法。但很容易确保它首先被加载,然后从正在加载它的quartz中排除logback-classic,如下所示:

    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.2.3</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.quartz-scheduler</groupId> …
Run Code Online (Sandbox Code Playgroud)

java slf4j maven transitive-dependency logback-classic

5
推荐指数
1
解决办法
1999
查看次数

登录字符串长度

我正在使用 logback 记录到 Spring Boot 服务中的滚动文件。在我的一门课程中,我试图记录一个非常长的字符串(一个非常大的对象数组的字符串值,可以包含数万个元素)。

log.info(str);
Run Code Online (Sandbox Code Playgroud)

上面没有打印,可能是因为str的值是一个非常非常长的字符串。

//logback truncates the list - to preserve this we should record it in an audit table
            String rl = String.valueOf(reptIdList);
            String truncRlStr = rl.substring(0, Math.min(rl.length(), 100));
        log.info(truncRlStr);
Run Code Online (Sandbox Code Playgroud)

上面确实打印了。可能是因为我将很长的字符串截断为 100 个字符。

logback 中的字符串长度可能有限制 - 有没有办法将其设置为最大字符串长度?我注意到登录控制台时对字符串长度没有限制。

感谢您的任何建议。

java spring log4j logback slf4j

5
推荐指数
1
解决办法
3029
查看次数