小编Rem*_*pma的帖子

slf4j&log4j2 maven设置查询

我在我的项目中使用log4j2和slf4j并使用maven进行构建.我正在使用以下pom文件(仅显示相关的依赖项),但我收到下面复制的错误与此pom文件 - 任何想法我需要添加/删除以使其工作.我已经访问了错误中的url以及log4j2依赖项页面,因此请不要只指向响应中的URL.

信息:

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)

pom文件

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <slf4j.version>1.7.7</slf4j.version>
</properties>

   <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>


    <dependency>
        <groupId>com.lmax</groupId>
        <artifactId>disruptor</artifactId>
        <version>3.2.0</version>
    </dependency>

     <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.0.1</version>
     </dependency>

     <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.0.1</version> 
     </dependency>
Run Code Online (Sandbox Code Playgroud)

更新: 我在我的pom文件中添加了以下依赖项,我在mavenrepository中看到了jar - 虽然我在运行mvn clean/install时仍然看到相同的消息

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.0.1</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

java logging slf4j maven log4j2

21
推荐指数
2
解决办法
3万
查看次数

使用Log4j2记录Spring

我正在尝试使用Log4j2将spring日志打印到文件和控制台中.我想这是我的Log4j2配置中的一个问题.我无法让它发挥作用.我在log4j2.xml文件中有这个配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration name="defaultConfiguration" status="warn" strict="true" monitorInterval="5">
    <properties>
        <property name="patternlayout">%d{ISO8601} [%t] %-5level %logger{36} - %msg%n%throwable{full}</property>
        <property name="filename">${env:MY_ROOT}/logs/mylog.log</property>
        <property name="filenamePattern">${env:MY_ROOT}/logs/mylog-%d{yyyy-dd-MM}-%i.log.gz</property>
    </properties>
    <appenders>
        <appender name="Console" type="Console" target="SYSTEM_OUT">
            <layout type="PatternLayout" pattern="${patternlayout}" />
        </appender>
        <appender name="File" type="RollingFile" fileName="${filename}" filePattern="${filenamePattern}" bufferedIO="true" immediateFlush="true"
        append="true">
            <layout type="PatternLayout" pattern="${patternlayout}" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="50 MB" />
            </Policies>
            <DefaultRolloverStrategy max="30" />
        </appender>
        <appender name="AsynchFile" type="asynch" blocking="true" bufferSize="128">
            <appender-ref ref="File" />
        </appender>
    </appenders>
    <loggers>
        <root level="info">
            <appender-ref ref="Console" />
            <appender-ref ref="AsynchFile" />
        </root>
        <logger name="org.springframework.beans"> …
Run Code Online (Sandbox Code Playgroud)

java logging spring log4j log4j2

19
推荐指数
2
解决办法
2万
查看次数

log4j2中基于时间的触发策略

我试图每小时创建新的日志文件.我在RollingFileAppender中使用lo4j2的TimeBasedTriggerringPolicy.下面是我从log4j2官方网站上获取的示例xml配置代码.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
   <Appenders>
      <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH}-%i.log.gz">
         <PatternLayout>
            <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
         </PatternLayout>
         <Policies>
            **
            <TimeBasedTriggeringPolicy interval="1" modulate="true" />
            **
            <SizeBasedTriggeringPolicy size="250 MB" />
         </Policies>
      </RollingFile>
   </Appenders>
   <Loggers>
      <Root level="error">
         <AppenderRef ref="RollingFile" />
      </Root>
   </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

在interval属性中,我设置了1表示1小时.但我的文件仍然不会每1小时滚动一次.

请帮我发现任何错误.

注意:我已经包含了log4j2的beta9(这是最新的)

java configuration logging log4j log4j2

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

方法getLogger()不再是log4j2中Logger的成员?

我有log4j-api-2.0.0.jarlog4j-core-2.0.2.jar导入到我的构建路径中.但不知何故,以下代码失败了:

import org.apache.logging.log4j.core.Logger;

public class TheClass {

    private static Logger log = Logger.getLogger(TheClass.class);

...
Run Code Online (Sandbox Code Playgroud)

并且错误消息显示:

The method getLogger(Class<TheClass>) is undefined for the type Logger

我只是好奇getLogger()不再是Logger中的有效方法?

java logging log4j log4j2

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

如何指定Log4J 2.x配置位置?

有没有办法log4j2.xml手动指定Log4J 2.x 文件位置(如DOMConfigurator在Log4J 1.x中),而不会弄乱类路径和系统属性?

java configuration logging log4j log4j2

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

我的log4j2日志文件总是有每行的双倍输出.我怎么能停止复制呢?

我的log4j2日志文件始终具有每行的双倍输出.我怎么能停止复制呢?

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
    <properties>
        <property name="name">CernerPharmacyWebApp</property>
        <property name="pattern">%d %-5p %C{2} (%F:%L) - %m%n</property>
    </properties>
    <Appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout><pattern>${pattern}</pattern></PatternLayout>
        </Console>
        <RollingFile name="ROLLING_FILE" fileName="..\logs\${name}.log"
                     filePattern="..\logs\${name}-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout><pattern>${pattern}</pattern></PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy/><!-- Rotated everyday -->
                <SizeBasedTriggeringPolicy size="50 MB"/> <!-- Or every 50 MB -->
            </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="error">
            <!-- <AppenderRef ref="CONSOLE"/> -->
            <AppenderRef ref="ROLLING_FILE"/>
        </Root>
        <!-- Controls packages -->
        <Logger name="com.jarmel.pharmacy.controls.BarCodeOrderServlet" level="trace">
            <!-- <AppenderRef ref="CONSOLE"/> -->
            <AppenderRef ref="ROLLING_FILE"/>
        </Logger>
        <Logger name="com.jarmel.pharmacy.controls.GetCodeValues" level="error">
            <!-- <AppenderRef ref="CONSOLE"/> --> …
Run Code Online (Sandbox Code Playgroud)

java configuration logging log4j log4j2

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

按需重新加载log4j2配置

我将log4j2.xml配置文件设置为每30秒检查一次:

<Configuration status="WARN" monitorInterval="30">
    ...
</Configuration>
Run Code Online (Sandbox Code Playgroud)

是否有可能以编程方式告诉log4j2检查配置中的更改而不是超时?

NB我不想以编程方式加载指定配置文件的配置,我只想告诉log4j2检查之前加载的配置文件,就好像monitorInterval已过期一样.

谢谢!

java configuration logging log4j log4j2

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

如何验证log4j2是通过LMAX disruptor异步记录的?

我正在开发一个Eclipse RCP应用程序,并且已经付出了一些努力让log4j2在应用程序中运行.现在一切似乎工作正常,作为画龙点睛,我想让所有记录器异步.

我已经设法在类路径上获得LMAX Disruptor,并认为我已经解决了提供的问题sun.misc.-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector在运行配置中设置VM参数,并正确设置log4j2.xml文件.我想.这就是问题所在.我希望能够以正确的方式验证我的应用程序以异步方式记录,因此我可以享受延迟方面的好处.

我怎么能 - 然后 - 在过程中利用LMAX Dirsuptor验证我的记录器是否异步工作?

java logging asynchronous log4j log4j2

15
推荐指数
2
解决办法
5278
查看次数

如何正确关闭log4j2

如果没有在Web应用程序中运行,关闭Log4j2的正确方法是什么?我只看到一个noop LogManager.shutdown()

java logging log4j application-shutdown log4j2

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

使用slf4j和log4j2

我最近一直在尝试log4j2.现在,我想用slf4j进行测试,并想知道如果我用log4j2尝试slf4j,log4j2中的所有功能(例如,通过disruptor的异步记录)是否可用.我曾尝试加入SLF4J jar文件和log4j2和破坏者的JAR文件到测试项目(我加了log4j的-SLF4J罐子,但不能完全确定其是否只是针对log4j的或log4j2为好).当我使用log4j2时,我可以将语句注销到日志文件中.当我尝试SLF4J,这是行不通的(我不知道如果我的配置或事实SLF4J不设置与log4js破坏者记录工作?任何建议将受到欢迎.我会更新更多的信息后,并示例代码也是如此.

java logging log4j slf4j log4j2

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