标签: slf4j

Log4j slf4j 不工作

我正在尝试在我的 Apache Camel 项目中进行日志记录。我已经尝试过以下方法:

VM args 在 Eclipse 中,我添加了以下 VM args: -Dlog4j.configuration=log4j-/resources/log4j.properties -Dlog4j.debug=true

类路径上的属性文件 我已仔细检查 log4j.properties 是否在类路径上

我的java看起来像这样:

Logger LOG = LoggerFactory.getLogger(CamelMain.class);
LOG.info("starting");
Run Code Online (Sandbox Code Playgroud)

我的 pom 包含以下内容:

<dependency>
          <groupId>org.apache.camel</groupId>
          <artifactId>camel-core</artifactId>
          <version>2.14.1</version>
        </dependency>
        <dependency>
          <groupId>org.apache.camel</groupId>
          <artifactId>camel-beanio</artifactId>
          <version>2.14.1</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.1</version>
        </dependency>       
         <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.2</version>
          </dependency>
          <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.2</version>
          </dependency>
Run Code Online (Sandbox Code Playgroud)

任何想法为什么日志记录不起作用?

更新/解决方案

我需要添加以下内容:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.6.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

java logging log4j apache-camel slf4j

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

动态更改在 tomcat 上运行的 Web 应用程序的 Logback 级别

我在 Tomcat 7 上运行的 java Web 应用程序的资源文件夹中有一个。logback.xml有没有办法在应用程序运行时动态更改应用程序某些类的调试级别?

标准做法是从 CLI 运行一个普通的 java jar,只需logback.xml使用 vim 进行编辑,一段时间后日志就会更新。这对于 tomcat 是否可行,因为我尝试过,但 id 似乎不起作用。

还有更好的办法吗?

java tomcat logback slf4j

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

抑制 logback 中的信息消息

我工作的应用程序将创建为 jar 文件并通过命令行运行它。不涉及应用程序服务器。当我运行 jar 文件时,来自 logback 的信息会打印在控制台上。如何抑制 logback 包中的所有日志记录

13:46:30,534 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
13:46:30,534 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
13:46:30,534 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/Users/util/target/classes/logback.xml]
13:46:30,588 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
13:46:35,598 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
13:46:35,605 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [stdout]
13:46:35,621 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] …
Run Code Online (Sandbox Code Playgroud)

logback slf4j

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

Log4j2/slf4j - 是否应该从类路径中删除 commons-logging.jar?

我的日志依赖项目前如下所示:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-bom</artifactId>
            <version>2.9.1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

<dependencies>
    <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>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我注意到commons-logging.jar由于某种原因它仍然在我的类路径中。我应该排除它还是不会引起任何问题?

到目前为止我没有注意到任何问题,但我仍然想知道那个罐子是否仍然会以某种方式引起问题。

java log4j slf4j maven

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

@Slf4j找不到符号LOG

我知道针对基本相同的错误发布了多个问题。但是,我不认为它们与我的问题相同。

简而言之,我正在尝试编译 oci-java-sdk 附带的示例之一。它无法编译。看起来像一个 jar 文件左右有 LOG 变量,所以我想知道在哪里可以找到该 jar 文件。

详细信息如下。首先,我使用 Oracle Linux,并使用 RPM 安装了 oci-java-sdk。接下来,我将整个示例目录复制到我的主目录。我的 CLASSPATH 如下所示:

$ echo $CLASSPATH
:/usr/lib64/java-oci-sdk/lib/oci-java-sdk-full-1.6.1.jar:/usr/lib64/java-oci-sdk/third-party/lib/*
Run Code Online (Sandbox Code Playgroud)

根据我工作的需要,我尝试构建如下示例:

$ javac -Xlint -cp $CLASSPATH:$PWD/lombok.jar:/usr/share/java/*:/usr/share/java/slf4j/* ./EventsServiceExample.java
Run Code Online (Sandbox Code Playgroud)

如上所示,我是lombok.jar从lombok项目网站下载的。命令javac失败如下:

$ javac -Xlint -cp $CLASSPATH:$PWD/lombok.jar:/usr/share/java/*:/usr/share/java/slf4j/* ./EventsServiceExample.java 
./EventsServiceExample.java:83: error: cannot find symbol
        LOG.info("Number of rules in compartment {} is {}", compartmentId, rulesList.size());
        ^
  symbol:   variable LOG
  location: class EventsServiceExample
./EventsServiceExample.java:135: error: cannot find symbol
            LOG.info(
            ^
  symbol:   variable LOG
  location: class EventsServiceExample
./EventsServiceExample.java:143: error: cannot find symbol …
Run Code Online (Sandbox Code Playgroud)

java slf4j lombok oracle-cloud-infrastructure

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

Spring Boot 中 logback 中的 OWSAP ESAPI 日志记录支持

Spring Boot 应用程序的 logback 是否支持 OWSAP ESAPI 日志记录?我做了很多研究,但对此找不到太多。我发现org.owasp.esapi在这个PR之后现在支持这个。但这意味着我将不得不取消 logback。有没有一种方法可以使用 logback 实现 OWSAP ESAPI 日志记录?我们正在使用slf4jlogback 提供的记录器。

我查看了 logback 的 maven页面,自 2017 年以来没有任何重大版本。所以我猜测 logback 不支持 OWSAP ESAPI 日志记录。如果我错了,请纠正我。如果是这种情况,我可以使用其他替代方案吗?

另外根据这个spring-boot 不支持 slf4j 1.8 及以上版本。如果是这种情况,我可以使用其他替代方案吗?

java spring logback slf4j owasp

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

Helidon MP:如何将 slf4j 日志消息发送到 Kafka 代理?

我正在尝试将 Helidon MP 应用程序中的 slf4j 日志消息发送到在端口 9092 上运行的 Kafka 服务器。我有以下类作为示例:

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class Service {

  private final ConfigProvider configProvider;

  @Inject
  public Service(ConfigProvider configProvider) {
    this.configProvider = configProvider;
  }

  public String getString() {
    String msg = String.format("%s %s !", configProvider.getString());
    log.info("Entered getString() method");
    return msg;
  }
}
Run Code Online (Sandbox Code Playgroud)

我还有一个logging.xml文件,它将Appender指定为KafkaAppender:

<Configuration>
    <Appenders>
        <Kafka name="KafkaAppender" topic="app-logs"
               syncSend="false">
            <Property name="bootstrap.servers"
                      value="localhost:9092"/>
        </Kafka>
    </Appenders>
    <Loggers>
        <Logger name="org.apache.kafka" level="WARN"/> <!-- avoid recursive logging -->
        <Root level="INFO">
            <AppenderRef ref="KafkaAppender"/>
        </Root>
    </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

但是,当我运行该应用程序时,出现以下错误:

2022-11-28 14:23:17,358 main …
Run Code Online (Sandbox Code Playgroud)

java slf4j apache-kafka log4j2 helidon

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

Java:线程"main"中的异常java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory

我有一个项目结构为

myproject/
         moduleA/
         moduleB/
         moduleC/
Run Code Online (Sandbox Code Playgroud)

myprojectpom.xml作为

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.4</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.0.3</version>
            <scope>provided</scope>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

现在moduleC需要moduleB代码,因此它将依赖项引用为

       <dependency>
            <groupId>com.org.myproject</groupId>
            <artifactId>moduleB</artifactId>
            <version>${project.version}</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

但是当我执行课程时moduleC,它会抱怨

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
......
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
Run Code Online (Sandbox Code Playgroud)

当我的moduleC类执行moduleB代码时会发生这种情况

我做错了什么?我怎样才能解决这个问题?

java logging slf4j

0
推荐指数
1
解决办法
4119
查看次数

为什么有人会在部署时选择/更改特定的日志记录框架?

我正在阅读有关使用java进行日志记录的信息并且遇到了这一点:在此处输入链接描述 它讨论了slf4j的一个优点:
可以在部署时选择他的日志框架==>可以在部署时插入所需的日志框架在类路径上插入适当的jar文件(绑定).有人可以向我解释为什么以及我们需要它的地方?

java logging slf4j

0
推荐指数
1
解决办法
52
查看次数

Tomcat maven插件 - 无法加载类"org.slf4j.impl.StaticLoggerBinder"

当我在一个独立的tomcat容器中启动我的webapp时,我看到Flyway日志记录正常(如果找到则使用commons-logging,如下面的Axel所述,则使用sout).

但是,当我使用apache tomcat maven插件(tomcat7-maven-plugin)时,我看到以下内容:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Run Code Online (Sandbox Code Playgroud)

没什么好看的.这是完整的代码:

public void contextInitialized(ServletContextEvent sce) {
    Flyway flyway = new Flyway();
    flyway.setDataSource(...);
    flyway.migrate();
}

<listener>
    <listener-class>com.blah.conf.FlywayListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

我正在使用logback-classic进行日志记录.泽西和吉斯都记录正常(虽然我删除它们以缩小问题范围).

这是我在类路径中看到的唯一与日志相关的jar:

logback-classic-1.0.13
logback-core-1.0.13
slf4j-api-1.7.5
Run Code Online (Sandbox Code Playgroud)

这是slf4j的依赖树:

mvn dependency:tree -Dverbose -Dincludes=org.slf4j
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ hello ---
[INFO] com.hello:hello:war:1.0-SNAPSHOT
[INFO] \- ch.qos.logback:logback-classic:jar:1.0.13:compile
[INFO]    \- org.slf4j:slf4j-api:jar:1.7.5:compile
Run Code Online (Sandbox Code Playgroud)

所以我更新的问题是,为什么使用tomcat maven插件vs独立存在差异?我没有在"target"文件夹中看到临时部署的任何其他jar.

更新:添加jcl-over-slf4j后,问题就消失了.

java logging logback slf4j tomcat7

0
推荐指数
1
解决办法
4107
查看次数