标签: slf4j

如何在嵌入Jetty的情况下启用DEBUG级别日志记录?

我正在尝试将日志记录级别设置为DEBUG嵌入式Jetty实例.

http://docs.codehaus.org/display/JETTY/Debugging上的文档说 -

在调用new org.mortbay.jetty.Server()之前调用SystemProperty.set("DEBUG","true").

我不确定这个SystemProperty课是什么,似乎没有记录在任何地方.我试过了System.setProperty(),但那并没有成功.

jetty slf4j

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

通过SLF4J记录本机VS Logback

我已经阅读了以下有关Java可用日志框架的文章:http: //michaelandrews.typepad.com/the_technical_times/2011/04/java-logging-reconsidered.html

作者提到使用SLF4J和Logback.这与直接使用Logback有什么不同.如果直接使用Logback而不是使用SLF4J,那会不会更好,因为Logback是在SLF4J之上构建的.

java logging logback slf4j

28
推荐指数
2
解决办法
9437
查看次数

强制slf4j使用logback

反正是否强制slf4j使用特定的日志记录提供程序(在我的情况下是logback)?在他们的文档中:

在类路径上找到了多个绑定

SLF4J API被设计为一次只与一个底层日志框架绑定.如果类路径上存在多个绑定,SLF4J将发出警告,列出这些绑定的位置.如果类路径上有多个绑定,请选择一个且只能使用一个绑定,并删除其他绑定.例如,如果类路径上同时包含slf4j-> simple-1.6.6.jar和slf4j-nop-1.6.6.jar,并且希望使用nop(> no-operation)绑定,则删除slf4j-类路径中的simple-1.6.6.jar.如果无法删除超级绑定,SLF4J仍将与一个日志框架/实现绑定.从版本1.6.6开始,SLF4J将命名它实际绑定的框架/实现类.

注意SLF4J发出的警告只是一个警告.

就我而言,我有log4j.jar,slf4j-log4j12.jar,log4j-over-slf4j.jar和所有的类路径中的logback罐子.我知道拥有slf4j-log4j12.jarlog4j-over-slf4j.jar在一起是错误的,但我的项目非常大,找到并排除maven依赖并不总是很简单.在这种情况下,slf4j甚至没有打印任何警告,因为我们只使用logback配置.我花了一天时间才明​​白这个罐子.

我想要的是强制slf4j通过JVM参数使用logback,例如,它可以打印警告,我可以在将来排除jar.

logging log4j logback slf4j

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

覆盖logback配置

有什么方法可以覆盖logback配置吗?我知道我们在名为logback.xml的文件中定义了logback配置(通常存储在src/resources路径中),我知道通过使用<include>tag我们可以设置一个外部文件添加到logback.xml,如下所示:

<configuration>

<!--<include url="file:///d:/ServerConfig.xml"/>-->
<include file="${outPut}/ServerConfig.xml"/>


<logger name="Server" LEVEL="DEBUG">
    <appender-ref ref="FILEOUT" />
</logger>

<root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <!--<appender-ref ref="FILEOUT" />-->
</root>

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

但是如果我想覆盖这个默认配置怎么办(例如设置根记录器,级别为INFO)

顺便说一下这里是包含的文件:

<included>

<!-- <property file="d:/ServerSysVar.properties"/>-->
<property file="${outPut}/ServerSysVar.properties"/>


<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>



<appender name="FILEOUT" class="ch.qos.logback.core.FileAppender">
    <file>${Sys_Location}/Serverfile4.log</file>
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} %class{36}.%M %L CLIENT_PORT:%X{ClientPort}- %msg%n</pattern>
    </encoder>
</appender> …
Run Code Online (Sandbox Code Playgroud)

logging logback slf4j

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

使用java注释注入logger依赖项

我使用带有aspect-j注释支持的spring来允许@Loggable注释.这允许基于配置自动登录类.

我想知道我是否可以以某种方式使用此注释将slf4j Logger变量暴露给类以供直接使用,这样我就不必对以下内容执行某些操作:

Logger logger = LoggerFactory.getLogger(MyClass.class);
Run Code Online (Sandbox Code Playgroud)

如果上面因为注释而隐式可用,那将是很好的,我可以在logger.debug("...");没有声明的情况下进行.我不确定这是否可行.

java spring annotations slf4j

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

Akka SLF4J的logback配置和用法

我已经完成以下步骤来尝试为我的akka​​应用程序配置日志记录:

  • 创建了一个application.conf文件并将其放在src/main/resources中.看起来像:

    
        akka { 
          event-handlers = ["akka.event.slf4j.Slf4jEventHandler"] 
          loglevel = "INFO"
        }
    

  • 创建了一个logback.xml文件并将其放在src/main/resources中.看起来像:

    <configuration>
    
      <appender name="FILE" class="ch.qos.logback.core.fileappender">
        <File>./logs/akka.log</File>
        <encoder>
          <pattern>%d{HH:mm:ss.SSS} [%-5level] %msg%n</pattern>
        </encoder>
      </appender>
    
      <root level="info">
        <appender-ref ref="FILE" />
      </root>
    
    </configuration>
    
    Run Code Online (Sandbox Code Playgroud)
  • 将以下内容添加到我的.scala sbt构建文件中:


    libraryDependencies += "com.typesafe.akka" % "akka-slf4j" % "2.0.3", libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.0.9" lazy val logback = "ch.qos.logback" % "logback-classic" % "1.0.9"

  • 尝试此代码记录:

    
        import akka.event.Logging
    val log = Logging(context.system, this) log.info("...")

我得到的只是标准输出日志记录,没有日志创建日志文件.

我错过了一步吗?或者配置错误?

scala logback slf4j akka

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

是否存在使用消息参数作为属性创建JSON对象的Logback布局?

我想将日志事件作为带有参数化字符串消息的JSON对象发送到Loggly.我们的项目目前有很多代码如下:

String someParameter = "1234";
logger.log("This is a log message with a parameter {}", someParameter);
Run Code Online (Sandbox Code Playgroud)

我们目前正在使用Logback作为我们的SLF4J后端,而Logback的JsonLayout将我们的ILogEvent对象序列化为JSON.因此,当我们将日志事件发送到Loggly时,它们看起来像这样:

{
    "message": "This is a log message with a parameter 1234",
    "level": INFO,
    ....
}
Run Code Online (Sandbox Code Playgroud)

虽然这确实有效,但它会message为每个值发送一个不同的字符串someParameter,这使得Loggly的自动过滤器旁边无用.

相反,我想要一个创建如下所示的JSON的布局:

{
    "message": "This is a log message with a parameter {}",
    "level": INFO,
    "parameters": [
        "1234"
    ]
}
Run Code Online (Sandbox Code Playgroud)

这种格式允许Loggly将所有日志事件与消息This is a log message with a parameter组合在一起,而不管其值如何someParameter.

看起来Logstash的KV过滤器做了类似的事情 - 有没有办法用Logback完成这个任务,没有编写我自己的布局来执行ILogEvent对象的自定义序列化?

java json logback slf4j loggly

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

Spring Boot - 没有写入日志文件(不遵守logging.file)

我使用Spring Boot并希望它将日志输出写入文件.

根据文档,这只是通过设置完成

logging.file=filename.log
Run Code Online (Sandbox Code Playgroud)

虽然控制台输出工作正常,filename.log但未创建.此外,如果我手动创建文件,则不会写入任何内容.我错过了什么?

spring logback slf4j spring-boot

27
推荐指数
8
解决办法
4万
查看次数

Solr:如何拒绝记录

好了,我很高兴Solr的,但我似乎无法弄清楚如何调低日志记录级别,使其实际运行足够快,当我做一个巨大的进口运行.

我甚至不确定它正在使用哪个日志框架(因为,你知道,java.util.logging,log4jcommons-logging 都不够,我们需要将slf4j添加到混合中!)好抱歉,不得不让那个轻微的咆哮.:-)

所以我src/main/resources/log4j.properties配置了:

log4j.rootLogger=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%5p [%t] (%F:%L) - %m%n
org.apache.solr.core=WARN
org.apache.solr.update.processor=WARN
Run Code Online (Sandbox Code Playgroud)

然后,我已经src/main/resources/logging.properties配置了以下好的措施:

.level = WARNING

com.gwtstore.level=ALL
com.appgravity.level=ALL
org.apache.solr.core.level=WARNING
org.apache.solr.update.processor.level=WARNING
Run Code Online (Sandbox Code Playgroud)

然而不知何故,我仍然看到以下吨:

INFO: {add=[-7757828706308755634]} 0 0
Feb 21, 2011 6:12:23 PM org.apache.solr.core.SolrCore execute
INFO: [] webapp=null path=/update params={} status=0 QTime=0 
Run Code Online (Sandbox Code Playgroud)

这是我的类路径:

src/test/resources
src/test/java
src/main/resources
src/main/java
idea_rt.jar
junit-rt.jar
deploy.jar
dt.jar
javaws.jar
jce.jar
jconsole.jar
management-agent.jar
plugin.jar
sa-jdi.jar
alt-rt.jar
charsets.jar
classes.jar
jsse.jar
ui.jar
apple_provider.jar
dnsns.jar …
Run Code Online (Sandbox Code Playgroud)

java logging solr slf4j

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

在静态和非静态上下文中创建SLF4J记录器的开销是多少?

我总是使用以下模式构建(SLF4J)记录器:

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

到目前为止这已经奏效了,但我想知道static某些情况下的上下文以及需要一直传递具体的类文字,而不是仅仅使用非静态记录器

private final Logger log = LoggerFactory.getLogger(getClass());
Run Code Online (Sandbox Code Playgroud)

这之前基本上已经问过(并回答)了LOG4J

记录器应该是私有静态还是非静态

和这里

记录器应该是最终的和静态的吗?

我意识到final基本上是强制性的,所以我想知道在非静态环境中使用SLF4J的开销实际上有多高.

问:

使用是否有任何重大的实际开销

private final Logger log = LoggerFactory.getLogger(getClass());
Run Code Online (Sandbox Code Playgroud)

过度

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

普通(网络)应用程序?(这里不需要"讨论"高端,重载的webapps)


注意,我最终计划使用更好的方法使用CDI获得SLF4J记录器

@Inject private final Logger log;
Run Code Online (Sandbox Code Playgroud)

http://www.seamframework.org/Weld/PortableExtensionsPackage#H-TtLoggerttInjection所述,但我需要先了解记录器缓存.

子问题:甚至可以使用?:

@Inject private static final Logger log;
Run Code Online (Sandbox Code Playgroud)

(刚开始用CDI开头)

java logging static slf4j cdi

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

标签 统计

slf4j ×10

logback ×6

java ×5

logging ×5

spring ×2

akka ×1

annotations ×1

cdi ×1

jetty ×1

json ×1

log4j ×1

loggly ×1

scala ×1

solr ×1

spring-boot ×1

static ×1