标签: logback

如何使用testng,slf4s和logback在scala单元测试中进行日志记录

我是Scala的新手,并不熟悉Java的最新发展,所以我认为我认为这是一个基本问题.

我正在编写一些Scala代码,并使用ScalaTest和TestNG使用测试夹具进行测试.正在测试的代码使用slf4s执行其日志记录,由logback支持.

在我的'build.sbt'文件中,我有我需要的所有库的依赖项:

scalaVersion := "2.9.1"

// Add test dependencies on scalatest and testng

libraryDependencies ++= Seq("org.scalatest" %% "scalatest" % "1.6.1" % "test", "org.testng" % "testng" % "6.1.1" % "test")

// Use the slf4j logging facade for logging
libraryDependencies += "org.slf4j" % "slf4j-api" % "1.6.3"

//use the slf4j connectors to implement the JCL logging facade in terms of slf4j (which in turn is implemented in terms of logback)
//confused yet?
libraryDependencies += "org.slf4j" % "jcl-over-slf4j" % "1.6.3"

//use logback for …
Run Code Online (Sandbox Code Playgroud)

testng scala logback slf4j

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

在logback.xml中有没有办法通过classpath:指定文件日志目的地,没有绝对路径?

我在我的logback.xml配置文件中这个appender:

<appender name="FILE"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>classpath:addressbookLog.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>%d{dd MMM yyyy;HH:mm:ss} %-5level %logger{36} - %msg%n
      </Pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <FileNamePattern>classpath:addressbookLog.%i.log.zip</FileNamePattern>
      <MinIndex>1</MinIndex>
      <MaxIndex>10</MaxIndex>
    </rollingPolicy>

    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <MaxFileSize>2MB</MaxFileSize>
    </triggeringPolicy>
  </appender>
Run Code Online (Sandbox Code Playgroud)

所以我指定文件的路径,通过类路径以相对的方式打印日志,但它不起作用,没有创建和写入文件addressbookLog.log.它只适用于像/home/andrea/.../resources/addressbookLog.log这样的绝对路径.您对如何使用classpath有任何想法吗?

java logging logback

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

以编程方式设置Logback Appender路径

我正在尝试以编程方式设置Logback appender路径.(具有FixedWindowRollingPolicy的RollingFileAppender准确)

我这样做是因为我想让我的用户在首选项对话框中设置日志路径(Eclipse RCP)

我尝试过类似的东西,但是我没有改变配置文件中定义的日志路径:

Logger logback_logger = (ch.qos.logback.classic.Logger)LoggerFactory
   .getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
RollingFileAppender<ILoggingEvent> rfappender = 
   (RollingFileAppender<ILoggingEvent>)logback_logger.getAppender("FILE");
rfappender.setFile(newFile);
FixedWindowRollingPolicy rollingPolicy = 
   (FixedWindowRollingPolicy)rfappender.getRollingPolicy();
rollingPolicy.setFileNamePattern(newPattern);
Run Code Online (Sandbox Code Playgroud)

java logging logback

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

使用logback/slf4j时抛出异常

我正在使用slf4j 1.6.2 api jar(也尝试使用1.6.1) - logback版本是0.9.29(核心和经典).我在ubuntu上使用jdk1.6.我收到的例外情况将在下面复制.

Exception in thread "main" java.lang.NoSuchMethodError: org.slf4j.helpers.MessageFormatter.arrayFormat(Ljava/lang/String;[Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple;
    at ch.qos.logback.classic.spi.LoggingEvent.<init>(LoggingEvent.java:112)
    at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:471)
    at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:427)
    at ch.qos.logback.classic.Logger.info(Logger.java:631)
Run Code Online (Sandbox Code Playgroud)

我也收到一条抱怨slf4j绑定不匹配的消息.

"SLF4J: The requested version 1.6 by your slf4j binding is not compatible with [1.5.5, 1.5.6, 1.5.7, 1.5.8, 1.5.9, 1.5.10, 1.5.11]"
Run Code Online (Sandbox Code Playgroud)

java logback slf4j

18
推荐指数
3
解决办法
6万
查看次数

使用NO堆栈跟踪获取"ArrayIndexOutOfBoundsException:null"

在我们的日志文件中,我们发现以下内容

[2012-09-24 00:09:32.590 +0000UTC] ERROR host server1 [] [] somepackage.someclass [] [Unknown] [V3rAqPaDvvAAAAExEXhdWGyh] [pjsQwTGHzxcAAAE5j4YdGvWV] "ThreadName"  Some error happened:  java.lang.ArrayIndexOutOfBoundsException: null
Run Code Online (Sandbox Code Playgroud)

只有这一行,没有异常堆栈跟踪.

try发生此异常的块是执行使用javassist创建的动态生成的Java字节码.

我想知道两件事:

  1. java.lang.ArrayIndexOutOfBoundsException日期null
  2. 丢失的堆栈跟踪,尽管logger.error("message", theException)catch块内部使用日志挂钩调用,这通常会导致在日志文件中打印完整的堆栈跟踪.

我的问题:

  1. 什么样的代码可以导致日志输出"java.lang.ArrayIndexOutOfBoundsException:null".我尝试用没有运气的测试程序重现这个.我总是得到像"java.lang.ArrayIndexOutOfBoundsException:Index:3"或类似的东西.

  2. 丢失堆栈跟踪的原因可能是此代码是在运行时动态生成的,因此logger/JVM不会"知道"堆栈跟踪或相关的行号吗?

我们目前正在调试和调查以获取更多信息,但也许这听起来很熟悉.

java logging bytecode logback stack-trace

18
推荐指数
2
解决办法
9720
查看次数

播放无法加载自定义日志返回appender

我已经创建了一个自定义的logback appender.但是play为appender提供了一个ClassNotFound异常.

以下是我的追加者

package log

import ch.qos.logback.core.AppenderBase
import ch.qos.logback.core.UnsynchronizedAppenderBase
import ch.qos.logback.core.spi.ContextAwareBase
import log.model.LogMessage
import data.OrganizationDao
import log.dao.LogDao
import ch.qos.logback.core.status.Status

class MongoAppender extends ContextAwareBase {
  private def add(level:Int, msg: String, ex: Throwable) = {
    val message = ex match {
      case null => LogMessage(None, level, msg, null, null, new Array[String](0))
      case _ => LogMessage(None, level, msg, ex.getClass().getName(), ex.getMessage(), new Array[String](0))
    }

    LogDao.save(message)

  }
  override def addStatus(status:Status) = {
    add(status.getLevel(), status.getMessage(), status.getThrowable())
  }

}
Run Code Online (Sandbox Code Playgroud)

以下是我的logger.xml

<configuration>

    <conversionRule conversionWord="coloredLevel"
        converterClass="play.api.Logger$ColoredLevel" />

    <appender name="Mongo" …
Run Code Online (Sandbox Code Playgroud)

logback playframework

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

SLF4J + Logback不会登录WildFly

我在WildFly 8中运行Web应用程序,由于某种原因它不会记录.我使用SLF4J和LOGBACK.日志文件是在部署时创建的,但它是空的.我也没有在wildfly日志中看到我的日志语句.

该课程包含:

package com.blah.oops;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

log.debug("request called");
Run Code Online (Sandbox Code Playgroud)

战争包含:

  • WEB-INF\lib中\ SLF4J-API-1.7.5.jar
  • WEB-INF\lib中\的logback经典-1.1.1.jar
  • WEB-INF\lib中\的logback核-1.1.1.jar
  • WEB-INF \类\ logback.xml

配置文件logback.xml包含:

<configuration scan="true" scanPeriod="10 seconds">
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>${LOG_PATH}/backend-main.log</file>
        <encoder>
            <pattern>%date %level [%thread] %logger{10} %msg%n</pattern>
        </encoder>
    </appender>

    <!-- PROFILER configuration -->
    <turboFilter class="ch.qos.logback.classic.turbo.MarkerFilter">
        <Marker>PROFILER</Marker>
        <OnMatch>ACCEPT</OnMatch>
        <!--  <OnMatch>DENY</OnMatch> -->
    </turboFilter>

    <logger name="org.eclipse.jetty.util.log" level="info"/>
    <logger name="com.blah" level="debug"/>
    <logger name="org.apache.cxf" level="warn"/>

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

console.log包含logback初始化:

.[0m.[0m10:19:52,716 INFO  [stdout] (MSC service thread 1-2) 10:19:52,489 |-INFO in …
Run Code Online (Sandbox Code Playgroud)

java logback wildfly

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

logback显示带行号的日志

我想写日志,如:

2014-04-17 11:00:16.408 [http-apr-9090-exec-4] DEBUG package.method(line) - log.
Run Code Online (Sandbox Code Playgroud)

所以我在模式中配置logback.xml,配置如下:

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M(%line) - %msg%n
Run Code Online (Sandbox Code Playgroud)

除了行号,每件事都显示确定,如果我添加像

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M %line - %msg%n
Run Code Online (Sandbox Code Playgroud)

一切都行.所以我的配置肯定有问题.
谁能帮助我?谢谢.我希望显示我想要的内容,方法名称和行号之间没有空格.

java logging log4j logback

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

在特定类中关闭其他库的日志记录日志

我成功地使用Spring的@Scheduled注释每几秒执行一次方法.唯一的问题是,由于这种方法,我从Hibernate和Spring获得了很多关于事务等的日志消息.

我想保持日志记录级别相同,因为我喜欢接收应用程序中其他事务的此信息.

在执行特定方法时,是否有一种方法可以暂时禁止另一个库的日志记录?

java logging spring scheduled-tasks logback

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

覆盖WildFly中的日志记录

我使用tomcat并简单地覆盖默认日志系统.如何在我的spring应用程序中使用wildfly上的logback启用日志记录?

我的logback.xml是关于tomcat的

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
        </encoder>
    </appender>

    <logger name="org.springframework" level="WARN" />
    <logger name="com.citronium.planstery" level="INFO" />
    <logger name="org.apache.http.impl.conn.tsccm" level="ERROR" />

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

jboss log4j logback wildfly

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