标签: slf4j

在Spring应用程序中禁用Hibernate日志消息

我已经配置我的pom.xml包括SLF4J和绑定到Log4j和排除共享记录作为解释这里和残疾人Hibernate的自己的日志记录作为解释在这里.

我可以抑制Spring自己的消息,但是尽管我的log4j.properties设置如下,Hibernate消息仍然会出现.

log4j.debug=false
log4j.rootCategory=WARN, stdout
log4j.category.org.hibernate=ERROR, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p %t %c - %m%n
log4j.category.org.springframework = ERROR
log4j.category.org.hibernate = ERROR
Run Code Online (Sandbox Code Playgroud)

是我的pom.xml文件:

可能是什么问题?我看到hibernate生成的所有sql消息.

spring hibernate log4j slf4j

4
推荐指数
3
解决办法
6922
查看次数

SLF4J:避免完全限定的类名

这对你的家伙来说很容易!

如何防止 SLF4J 显示完全限定的类名(例如com.mycompany.mypackage.MyObject)而只输出MyObject

我通常更喜欢这个:

1)

private static final Logger LOGGER = LoggerFactory
        .getLogger(MyObject.class);
Run Code Online (Sandbox Code Playgroud)

对此:

2)

private static final Logger LOGGER = LoggerFactory
        .getLogger("MyObject");
Run Code Online (Sandbox Code Playgroud)

所以,当我重构/重命名MyObjectMyThing参考就会自动为我更新。

然而.. 1) 我得到了笨拙的输出: com.mycompany.mypackage.MyObject

我只需要MyObject在日志中看到...

可选:如果您知道如何\e[0;33m根据日志级别有选择地为输出着色(例如),那将会很高兴知道。

java logging slf4j

4
推荐指数
1
解决办法
1713
查看次数

Logback重复记录

我有一个logback配置问题.这是我的logback.xml:

<configuration>

<appender name="EMS" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>../logs/ems.log</file>
    <append>true</append>
    <encoder>
        <pattern>[%d{ISO8601}] {%t} [%p] %c - %m%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <fileNamePattern>../logs/ems.log.%i</fileNamePattern>
        <minIndex>1</minIndex>
        <maxIndex>99</maxIndex>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <maxFileSize>50MB</maxFileSize>
    </triggeringPolicy>
</appender>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
   <encoder>
     <pattern>[%d{ISO8601}] {%t} [%p] %c - %m%n</pattern>
   </encoder>
</appender>

<logger name="a.b.c" level="DEBUG">
  <appender-ref ref="EMS"/>
</logger>

<logger name="a.b.c.d.SomeServiceImpl" level="INFO">
    <appender-ref ref="EMS"/>
</logger>

<logger name="a.b.c.e.SomeFilter" level="INFO">
    <appender-ref ref="EMS"/>
</logger>

<root level="OFF">
    <appender-ref ref="EMS"/>
</root>

</configuration>
Run Code Online (Sandbox Code Playgroud)

问题是当我为根记录器设置以下行时:

<appender-ref ref="EMS"/>
Run Code Online (Sandbox Code Playgroud)

在ems.log文件中,每行重复:

[2013-12-31 13:16:59,217] {[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'} [DEBUG] a.b.c.f.CallerImpl - qweqweqwe
[2013-12-31 …
Run Code Online (Sandbox Code Playgroud)

logback slf4j

4
推荐指数
1
解决办法
4054
查看次数

如何使用forSach与slf4j.logger.info

我正在开发一个基于Spring Batch,Spring Boot,slf4j和Java 8的简单应用程序.我想尽可能多地使用lambda用于学习目的."myPojos.stream()forEach((myPojo) - > {log.info(myPojo);});"是什么问题 下面?该消息抱怨"......不适用于论点<? extends MyPojo".请注意,所有其他三个日志行都正常工作.

public class CustomItemWriter implements ItemWriter<MyPojo> {

    private static final Logger log = LoggerFactory.getLogger(CustomItemWriter.class);

    @Override
    public void write(List<? extends MyPojo> myPojos) throws Exception{
        myPojos.stream().forEach((myPojo)-> {log.info(myPojo);});//error
        myPojos.forEach(System.out::println);//it works
        myPojos.stream().forEach((myPojo) -> {System.out.println(myPojo);}); //it works
        log.info("finish"); //it works
    }

}
Run Code Online (Sandbox Code Playgroud)

java lambda log4j slf4j java-8

4
推荐指数
2
解决办法
3956
查看次数

Gradle和SLF4J拒绝排除传递依赖项会导致IllegalStateException

我在项目上运行单元测试时收到此错误:

Caused by: java.lang.IllegalStateException: Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError. See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more details.
    at org.slf4j.impl.Log4jLoggerFactory.<clinit>(Log4jLoggerFactory.java:54)
    ... 29 more
Run Code Online (Sandbox Code Playgroud)

我需要SLF4J,但不是以下依赖项设置的冲突:

dependencies {
    compile("org.springframework:spring-core:$springVersion")
    compile("org.springframework:spring-jdbc:$springVersion")
//    compile("org.springframework:spring-orm:$springVersion"
    compile("org.springframework:spring-tx:$springVersion")
    compile("org.springframework.data:spring-data-jpa:1.10.1.RELEASE") {
        exclude module: "slf4j-api"
        exclude module: "slf4j-over-slf4j"
        exclude module: "jcl-over-slf4j"
    }
    // tag::jetty[]
    compile("org.springframework.boot:spring-boot-starter-web:1.3.5.RELEASE") {
        exclude module: "spring-boot-starter-tomcat"
        exclude module: "slf4j-api"
        exclude module: "slf4j-over-slf4j"
        exclude module: "jcl-over-slf4j"
    }
    compile("org.springframework.boot:spring-boot-starter-jetty")
    // end::jetty[]
    // tag::actuator[]
    compile("org.springframework.boot:spring-boot-starter-actuator")
    // end::actuator[]
    testCompile("junit:junit")
    compile(group: 'org.hibernate.javax.persistence', name: 'hibernate-jpa-2.1-api', version: '1.0.0.Final')
    compile("org.apache.velocity:velocity:1.7") …
Run Code Online (Sandbox Code Playgroud)

spring log4j slf4j gradle

4
推荐指数
1
解决办法
5053
查看次数

将SLF4J日志重定向到JavaFX中的TextArea

我想显示SFX4J TextArea在JavaFX中记录的错误。我至今一个是appender的logback-的test.xml

<appender name="err" class="logtest.AppTA">
    <filter class="logtest.ErrFilter" />
    <encoder>
        <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)

TextArea 准备接收流:

public class Output extends OutputStream{
    private final TextArea ta;
    public Output(TextArea ta) {
        this.ta = ta;
    }
    @Override
    public void write(int b) throws IOException {
        if (ta!=null) {
            ta.appendText(String.valueOf((char) b));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和一个处理追加的类:

public class AppTA extends AppenderBase<ILoggingEvent> {

    PatternLayoutEncoder encoder;
    OutputStream os;

    @Override
    protected void append(ILoggingEvent event) {
        try {
            if (isEncoderInitialized) {
                this.encoder.doEncode(event); …
Run Code Online (Sandbox Code Playgroud)

java textarea javafx stream slf4j

4
推荐指数
1
解决办法
2708
查看次数

Logback 转换规则参数化

有没有办法在 Logback 中参数化转换规则?我已经尝试添加子节点、附加属性,但我看不到这样做的方法。

<conversionRule conversionWord="boundedMsg" converterClass="com.package.util.logging.converters.LongMessageConverter">
Run Code Online (Sandbox Code Playgroud)

我想添加 LongMessageConverter 类将使用的参数。

我的应用程序是在 Spring Boot 上设置的,我使用的是 Sl4J。

java logback slf4j spring-boot

4
推荐指数
1
解决办法
4112
查看次数

龙目岛@slf4j 不记录

我有一个 Spring 应用程序,它使用来自 Lombok 的 @slf4j 注释,但是我用它记录的所有内容都没有显示在控制台中。

我的应用程序包括以下库 slf4j-api-1.7.21 jcl-over-slf4j-1.7.21 lombok-1.16.10

我记录的所有内容都被传递给 NOPLogger(无操作记录器),它完全按照它应该做的......没有!

我是否需要在某处配置工厂才能使用实际记录某些内容的记录器?

spring log4j slf4j lombok

4
推荐指数
1
解决办法
3406
查看次数

具有 logback 条件的多个根记录器

参考:Logback的配置

我的配置可以包含 ...at most one <root> element...

但是后来在同一个文档中,在讨论条件时,我看到了这一点:

<configuration debug="true">
  <if condition='property("HOSTNAME").contains("torino")'>
    <then>
      <appender name="CON" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
          <pattern>%d %-5level %logger{35} - %msg %n</pattern>
        </encoder>
      </appender>
      <root> <------ root logger #1
        <appender-ref ref="CON" />
      </root>
    </then>
  </if>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${randomOutputDir}/conditional.log</file>
    <encoder>
      <pattern>%d %-5level %logger{35} - %msg %n</pattern>
   </encoder>
  </appender>

  <root level="ERROR"> <------ root logger #2
     <appender-ref ref="FILE" />
  </root>
</configuration>
Run Code Online (Sandbox Code Playgroud)

注意有两个<root>元素!我很困惑,因为我没有看到任何<else>元素,我会假设 FILE 附加程序和第二个根记录器仍在运行,即使主机名是“torino”。

这是一个如何有效的例子?为什么<root>在这种情况下允许两个记录器,而一个不在一个<if>或一个<else>

我错过了什么???

java logging logback slf4j

4
推荐指数
1
解决办法
1861
查看次数

SLF4JLoggerContext无法强制转换为LoggerContext

我知道错误:

Getting Exception org.apache.logging.slf4j.SLF4JLoggerContext cannot be cast to org.apache.logging.log4j.core.LoggerContext
Run Code Online (Sandbox Code Playgroud)

我知道解决方案是从类路径中删除log4j-to-slf4j,如下所述:获取异常org.apache.logging.slf4j.SLF4JLoggerContext无法强制转换为org.apache.logging.log4j.core.LoggerContext

但该项目是使用maven构建的,包含spring-boot-starter-web导入依赖项的内容.我无法摆脱spring-boot-starter-web,我需要log4j.

这是pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>ru.beinteractive</groupId>
    <artifactId>newlps</artifactId>
    <packaging>war</packaging>
    <version>1.0</version>
    <name>newlps</name>
    <url>http://maven.apache.org</url>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>   
    <dependencies>  
        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-storage</artifactId>
            <version>1.14.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>       
        <dependency>
            <groupId>com.jayway.jsonpath</groupId>
            <artifactId>json-path</artifactId>
            <scope>test</scope>
        </dependency>       
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>   
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <type>jar</type> …
Run Code Online (Sandbox Code Playgroud)

java spring log4j slf4j

4
推荐指数
1
解决办法
4562
查看次数

标签 统计

slf4j ×10

java ×6

log4j ×5

spring ×4

logback ×3

logging ×2

gradle ×1

hibernate ×1

java-8 ×1

javafx ×1

lambda ×1

lombok ×1

spring-boot ×1

stream ×1

textarea ×1