所以我对Logback真的很新,并对如何实现某些内容提出疑问.
假设我有两个appender:我希望appender"a"接受只有1或2的标记,但我希望appender"b"接受只有1或3的标记.我应该使用什么类型的过滤器?这有什么事吗?
项目设置:
从SomeBundle访问Logger类可以正常工作,但是日志记录项目找不到log4j.properties(log4j:WARN没有为logger找到appender).
问题:
运行maven项目时,Eclipse Juno 4.2上出现此错误.
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)
我没有使用slf4j进行日志记录.其实我不使用任何记录.
我究竟做错了什么.?
我的pom.xml中唯一的依赖项
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
编辑:
mvn依赖:树
[INFO] \- junit:junit:jar:4.10:test
[INFO] \- org.hamcrest:hamcrest-core:jar:1.1:test
Run Code Online (Sandbox Code Playgroud)
编辑2:
我创建了一个New Maven项目 - > maven-archetype-quickstart.之后,我运行干净安装和eclipse控制台显示上述错误.我甚至没有编写代码的任何部分.即使我删除了示例src java文件和示例测试java文件,它也会产生相同的错误.
编辑3:
我在Eclipse之外运行项目,没有错误指示.
在maven(m2e)中使用logback时,出现以下错误。环境:JBOSS 7.1.1,maven,eclipse。但是,如果我只是作为主类单独运行,它将很好地工作。我不知道为什么会收到此错误,任何人都可以帮助我解决此问题并找到解决方案。
17:24:23,675 ERROR [stderr] java.lang.ClassCastException: org.slf4j.helpers.NOPLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext
17:24:23,681 ERROR [stderr] at com.zreflect.emyed.whiteboard.pubsub.EventLoggerAsync.logStart(EventLoggerAsync.java:116)
17:24:23,683 ERROR [stderr] at com.zreflect.emyed.whiteboard.pubsub.EventLoggerAsync.onDisconnect(EventLoggerAsync.java:62)
17:24:23,684 ERROR [stderr] at org.atmosphere.cpr.AtmosphereResourceImpl.onDisconnect(AtmosphereResourceImpl.java:817)
17:24:23,686 ERROR [stderr] at org.atmosphere.cpr.AtmosphereResourceImpl.notifyListeners(AtmosphereResourceImpl.java:761)
17:24:23,688 ERROR [stderr] at org.atmosphere.cpr.AtmosphereResourceImpl.notifyListeners(AtmosphereResourceImpl.java:742)
17:24:23,690 ERROR [stderr] at org.atmosphere.cpr.AsynchronousProcessor.cancelled(AsynchronousProcessor.java:601)
17:24:23,691 ERROR [stderr] at org.atmosphere.container.BlockingIOCometSupport.cancelled(BlockingIOCometSupport.java:172)
17:24:23,693 ERROR [stderr] at org.atmosphere.cpr.AsynchronousProcessor$1.run(AsynchronousProcessor.java:119)
17:24:23,694 ERROR [stderr] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
17:24:23,696 ERROR [stderr] at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
17:24:23,698 ERROR [stderr] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
17:24:23,699 ERROR [stderr] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
17:24:23,703 ERROR [stderr] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)
17:24:23,707 ERROR …Run Code Online (Sandbox Code Playgroud) 我正在使用log4j2和slf4j以及hibernate 4.3.1.我在显示SQL查询的参数时遇到问题.我没有找到任何显示它们(SQL查询很好地显示但没有参数).这是我在persistence.xml中指定的内容:
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="xxxxx" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="hibernate.archive.autodetection" value="class" />
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
<property name="hibernate.query.factory_class"
value="org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory" />
<property name="max_fetch_depth" value="2" />
<property name="hibernate.jdbc.batch_size" value="100" />
</properties>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)
我在log4j2.xml中定义了这个:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG" verbose="true">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n" />
</Console>
<File name="MyFile" fileName="test.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<logger name="org.hibernate.SQL" level="DEBUG" …Run Code Online (Sandbox Code Playgroud) 我在SLF4J中有这个日志语句(在它下面有Logback):
logger.info("{} has {} depots, {00} vehicles and {} customers with a search space of {}.", ...);
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
A-n62-k8 has 1 depots, 8 vehicles and 61 customers with a search space of 10^108.
A-n63-k10 has 1 depots, 10 vehicles and 62 customers with a search space of 10^111.
Run Code Online (Sandbox Code Playgroud)
但我想要这个输出,它增加了额外的空间填充/缩进:
A-n62-k8 has 1 depots, 8 vehicles and 61 customers with a search space of 10^108.
A-n63-k10 has 1 depots, 10 vehicles and 62 customers with a search space of 10^111.
Run Code Online (Sandbox Code Playgroud)
这可能与SLF4J一起使用吗?
我有一个要登录的Web应用程序。logging.properties文件提供了一些默认日志记录,我无法对其进行影响。它记录服务器的启动,关闭等信息。
这些是此类日志的示例(正常日志,此处没有错):
2016/01/22 12:25:10 INFO (ApplicationContext.java:671 [ServerService Thread Pool -- 64]) - Initializing Spring root WebApplicationContext
2016/01/22 12:25:13 INFO (ConfigureListener.java:202 [ServerService Thread Pool -- 64]) - Initializing Mojarra 2.1.28-jbossorg-6 for context '/MyServices'
2016/01/22 12:25:15 INFO (DeploymentHandlerUtil.java:137 [ServerService Thread Pool -- 28]) - JBAS015859: Deployed "MyServices.war" (runtime-name : "MyServices.war")
2016/01/22 12:25:15 INFO (BootstrapListener.java:93 [Controller Boot Thread]) - JBAS015874: JBoss EAP 6.4.0.GA (AS 7.5.0.Final-redhat-21) started in 27257ms - Started 485 of 520 services (63 services are lazy, passive or on-demand)
Run Code Online (Sandbox Code Playgroud)
现在,我还为自己的方法登录了应用程序,使用以下方法指定:
private …Run Code Online (Sandbox Code Playgroud) 曾尝试搜索它,但我一直在获取...IS_UNDEFINED文件名。我只想将当前日期附加到日志文件中。logback.xml文件的任何简单示例?
这是我最近的尝试:
<Properties>
<property name="filePattern">log_${date:yyyy-MM-dd}.log</property>
</Properties>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${application.home:-.}/logs/${filePattern}</file>
<encoder>
<pattern>%date [%level] from %logger in %thread - %message%n%xException</pattern>
</encoder>
</appender>
Run Code Online (Sandbox Code Playgroud) 到目前为止,我一直在研究Java 7,最近又转到了Java-8,令人惊讶的是您可以在Java-8接口中添加方法。
到目前为止一切都很好。。。。
现在,我的问题是,这logging是任何开发中必不可少的部分,但是似乎lombok.extern.slf4j不允许您log通过接口方法添加内容,因为只允许在classes和上使用enums。
您如何使用log接口方法(如果通过lombok或这是唯一方法?)?还是不应该记录接口方法?我在这里想念什么?
PS:目前我有工作System.out.println....是啊...这就是小白 :)
所以我想为JUnit测试禁用日志记录。
最简单的方法是将绑定从切换slf4j-simple到slf4j-nop。
但是,我该怎么做呢?
我想exclude:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation "com.android.support:appcompat-v7:$support_version"
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation "org.jetbrains.anko:anko-common:$anko_version"
implementation "org.slf4j:slf4j-simple:1.6.1"
testImplementation("org.slf4j:slf4j-nop:1.6.1"){
exclude(group:'org.slf4j', module:'slf4j-simple')
}
implementation 'io.github.microutils:kotlin-logging:1.6.10'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
Run Code Online (Sandbox Code Playgroud)
但这仍然导致
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/user1291/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-nop/1.6.1/70249094d4e5653b6bdfea46f3a1a4165c1e1993/slf4j-nop-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/user1291/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.6.1/58e59bfb3e247097b8122243b3bfe0049c8cfae8/slf4j-simple-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.helpers.NOPLoggerFactory]
Run Code Online (Sandbox Code Playgroud)
还尝试了configurations:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar']) …Run Code Online (Sandbox Code Playgroud)