标签: slf4j

记录器应设置为什么访问级别?

我正在使用SLF4J和Log4J.我应该将记录器设置为哪些访问级别?

static final Logger logger = LoggerFactory.getLogger(ClassName.class);
Run Code Online (Sandbox Code Playgroud)

java logging log4j access-levels slf4j

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

Hibernate在数据库上保存数据时的问题

我正在尝试通过Java中的Hibernate帮助将数据保存到数据库.但当 ?运行代码,?有很多问题.任何人都可以帮助我吗?谢谢...

我的代码:

package org.ultimania.model;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class Test {

 public static void main(String[] args) {
  Session session = null;
  SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
  session = sessionFactory.openSession();
  Transaction transaction = session.getTransaction();

  BusinessCard card = new BusinessCard();
  card.setId(1);
  card.setName("Özgür");
  card.setDescription("Ac?klama");

  try{
  transaction.begin();
  session.save(card);
  transaction.commit();
  } catch(Exception e){
   e.printStackTrace();
  }
  finally{
   session.close();
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

问题 :

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Exception in thread "main" java.lang.NoClassDefFoundError: …
Run Code Online (Sandbox Code Playgroud)

java hibernate slf4j

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

Logback筛选Appender的不同附加器类型

我已经像这样配置了SiftingAppender:

<appender name="FILE" class="ch.qos.logback.classic.sift.SiftingAppender">

    <discriminator>
        <key>context</key>
        <defaultValue>global</defaultValue>
    </discriminator>

    <!-- sift into different files -->
    <sift>
        <appender name="FILE-${context}" class="ch.qos.logback.core.FileAppender">
            <file>${logroot}/${context}.log</file>
            <encoder>
                <pattern>[%d{HH:mm:ss.SSS}] %-5level %logger{36} [%thread]%n%msg%n</pattern>
            </encoder>
        </appender>
    </sift>

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

现在,我想RollingFileAppender在其中,但仅用于不带的消息context。那些context通常不是很大,但是全球范围是。

这可能吗?

java logging logback slf4j sifting-appender

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

自定义jUnit AssertFailure错误消息 - 与slf4j日志记录结合使用

我是jUnit和Selenium的新手.目前,我们正在我们的项目中进行POC评估工具的适用性.

我们的一个关键要求是在断言失败的情况下使用友好消息并验证失败.目标是通过手动测试人员对这些用户进行直观分析.

我正在尝试使用SLF4J来记录用户友好消息的INFO消息.

我面临的挑战是 - 当断言失败时,如何传递自定义消息而不是jUnit默认消息?

例如,我想摆脱以下默认断言失败消息

预期"健康AZ"匹配glob"Health A-ZZ"(已将glob变为regexp"Health A-ZZ")

并将其框定为

菜单项的标题与预期值"Health A-ZZ"不匹配.看到的实际价值是"健康AZ"

问题1 - 有没有办法用我想要的方式覆盖默认消息?问题2 - 我可以将变量参数传递给消息并使其成为动态消息吗?

示例代码:

try {
    assertEquals("Health A-ZZ", selenium.getText("//div[@id='topnav']/ul/li[2]/a"));
    logger.info("SUCCESS: Menu Item {} title verification Passed. EXPECTED : A-Z and Actual: {}",mainCounter, selenium.getText("//div[@id='topnav']/ul/li[2]/a"));
}

catch (AssertionError e) {
    logger.error("FAILURE: Menu Item {} title verification Failed. EXPECTED : A-ZZ and Actual: {}",mainCounter, selenium.getText("//div[@id='topnav']/ul/li[2]/a"));
}
Run Code Online (Sandbox Code Playgroud)

我得到两次打印的assertFailure消息..一个在上面的catch块中有错误消息,另一个是默认的junit assertfailre消息,就像我上面提到的那个我想要摆脱的消息.

提前致谢.

此致,普拉卡什

ant junit slf4j selenium-rc

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

log4j + commons-logging迁移到Logback

我们在当前项目中使用log4j + commons-logging.现在我们从log4j的到的logback mirgrating,所以我们只使用替换log4j.propertieslogback.xml或我们必须转换到log4j的SLF4J?

logging log4j runtime logback slf4j

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

grails中的log4j:在appender配置中使用变量时打印错误

我在grails 2.3.4中使用slf4j"DailyRollingFileAppender".

当我尝试使用变量作为"文件"参数的一部分时,grails总是在应用程序启动时打印一些错误日志.

但我的应用程序的日志消息可以按预期打印到指定的"user-event.log",尽管grails会给我这些错误消息.

下面是我的log4j配置:

log4j = {
    // Example of changing the log pattern for the default console appender:
    appenders {
        console name: 'stdout', layout: pattern(conversionPattern: '%c{2} %m%n')
        appender new DailyRollingFileAppender(
                name: "userEventLog",
                file: "${event.log.dir}/user-event.log",
                layout: pattern(conversionPattern: '%m%n'),
                datePattern: "'.'yyyy_MM_dd",
                threshold: org.apache.log4j.Level.INFO
        )
    }

    info userEventLog: "app.bean.log.UserEventLog"
}
Run Code Online (Sandbox Code Playgroud)

"event.log.dir"变量定义如下:

environments {
    development {
        // event log dir
        event.log.dir = "${userHome}/workspace/app/logs/event"
    }
    production {
        // event log dir
        event.log.dir = "/opt/www/app/logs/event"
    }
}
Run Code Online (Sandbox Code Playgroud)

应用程序启动时在grails控制台中打印的错误消息是:

| Error log4j:ERROR Property missing when …
Run Code Online (Sandbox Code Playgroud)

grails logging slf4j

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

如何防止logback/slf4j解析新的行字符

我正在使用SLF4j的logback来登录我的应用程序.我有一个包含新行字符的字符串.它是字符串值的一部分,但不表示新行.当我打印字符串时,logback将它打印在一个新行中.怎么预防这个?

码:

String str = "george\nmason"
logger.info(str);
Run Code Online (Sandbox Code Playgroud)

回归模式:

<pattern>[%d{dd MMM yyyy HH:mm:ss,SSS}] [%5p] [%X{sid}] [%-20C{0} %25M]:[%-4L] - %m%n</pattern>
Run Code Online (Sandbox Code Playgroud)

预期:

[19 Feb 2015 20:19:27] [ INFO] [] [myClass myMethod]:[52  ] - george\nmason
Run Code Online (Sandbox Code Playgroud)

实际产量:

[19 Feb 2015 20:19:27] [ INFO] [] [myClass myMethod]:[52  ] - george
mason
Run Code Online (Sandbox Code Playgroud)

java logging logback slf4j

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

如何配置log4j2以记录HikariCP

我写了一个小的Gradle项目,这样我就可以学习如何在同一个项目中一起配置HikariCP和JDBC以及Log4j2.我已将下面的log4j2配置src/main/resources放在我项目的目录中.当我使用我执行项目时,gradle run我收到一条关于不为com.zaxxer.hikari.HikariConfig记录器配置appender的警告.

有人会告诉我我做错了什么吗?

log4j2.xml

<?xml version="1.0" encoding="utf-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="com.zaxxer.hikari.HikariConfig" level="trace">
      <AppenderRef ref="Console"/>
    </Logger>
    <Root level="TRACE">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

的build.gradle

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven'
apply plugin: 'application'

targetCompatibility = 1.8
sourceCompatibility = 1.8
version = '0.0.1.0'
group = 'com.s2d'

mainClassName = "com.s2d.jdbctest.DemoJDBC"
applicationDefaultJvmArgs = ["-Djdbc.drivers=org.apache.derby.jdbc.EmbeddedDriver"]

task wrapper(type: Wrapper) {
  gradleVersion = '1.4' …
Run Code Online (Sandbox Code Playgroud)

java slf4j log4j2 hikaricp

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

Scala“无法在Main类中访问构造函数秒表”

关于分辨率的摘要,我认为我正在处理一个Scala问题,但事实证明Stopwatch和Scala Logging具有私有构造函数,并且我没有调用适当的公共方法来实例化它们。以下gzm0的答案指出了这一点。


尝试使用Guava秒表和Scala日志记录,无论我是在Main中还是在实例化类中创建一个,new Stopwatch()还是new Logger()在Main类中创建此错误,我都将遇到以下错误gradle run

constructor Logger in class Logger cannot be accessed in class RedBlackTree4150
var loggerInst = new Logger()
constructor Stopwatch in class Stopwatch cannot be accessed in class RedBlackTree4150
var stopWatchInst = new Stopwatch()
Run Code Online (Sandbox Code Playgroud)

如果这是一个重复的这个这个问题我不知道够不够去实现它。我看了这个问题,但没有一个可接受的答案,我试图(只是为了好玩)将我的构造函数调用中的内容删除了,但没有用。

编写我的第一个Gradle / Scala项目以进行算法分配分析。我想如果我是在Java中,我会问的是静态还是非静态,不知道那是我要处理的问题类型。Scala不是作业的一部分,所以我没有使用作业标签。

这是我的调用方式,程序的第一部分,完整的.scala文件和build.gradle位于Github上

import com.google.common.base.Stopwatch
import com.typesafe.scalalogging.slf4j.Logger
import scala.collection.immutable.TreeMap
import java.util.concurrent.TimeUnit

object Main extends App {
  // var rbtree = new RedBlackTree4150(logger, stopWatch)
  var rbtree = …
Run Code Online (Sandbox Code Playgroud)

constructor scala slf4j guava

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

在logback / slf4j中以编程方式添加添加器

我正在尝试在Logback中动态添加追加程序。这是我的代码。

LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
PatternLayoutEncoder ple = new PatternLayoutEncoder();
ple.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n");
ple.setContext(lc);
ple.start();
FileAppender<ILoggingEvent> fileAppender = new FileAppender<ILoggingEvent>();
String logFile = "new.log";
fileAppender.setFile(logFile);
fileAppender.setEncoder(ple);
fileAppender.setContext(lc);
fileAppender.start();

ch.qos.logback.classic.Logger logbackLogger =
                (ch.qos.logback.classic.Logger)LoggerFactory.getLogger(ModuleMessageHandler.class);
logbackLogger.addAppender(fileAppender);
logbackLogger.setLevel(Level.DEBUG);
logbackLogger.setAdditive(false);
Run Code Online (Sandbox Code Playgroud)

它可以正常运行,但仅适用于添加了追加程序的特定记录器。有没有办法使它适用于应用程序中的所有记录器?我正在寻找一种动态添加和删除附加程序的方法。

java logging logback slf4j

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