我创建了一个Grails 2.4.5应用程序(Grails创建应用程序myapp
),并在src/Groovy
下添加了大量Groovy类。对于任何需要日志记录的类,我使用了@Slf4j
注释,如下所示:
package com.example.myapp
import groovy.util.logging.Slf4j
@Slf4j
class MyObject {
def doSomething() {
log.info('I'm going to do something now.')
}
}
Grails生成的类也是如此,比如控制器和服务(也就是说,我使用<code>@Slf4j</code>注释处理所有事情)。我终于可以在本地运行<code>myapp
这是我在Config.groovy
中的日志配置:
log4j.main = {
console name: "stdout", layout: pattern(conversionPattern: "%c{2} %m%n")
info 'com.example.myapp' // I'm hoping this is a wildcard that actually
// means 'com.example.myapp.*'
error 'org.codehaus.groovy.grails.web.servlet',
'org.codehaus.groovy.grails.web.pages',
'org.codehaus.groovy.grails.web.sitemesh',
'org.codehaus.groovy.grails.web.mapping.filter',
'org.codehaus.groovy.grails.web.mapping',
'org.codehaus.groovy.grails.commons',
'org.codehaus.groovy.grails.plugins',
'org.codehaus.groovy.grails.orm.hibernate',
'org.springframework',
'org.hibernate',
'net.sf.ehcache.hibernate'
}
我知道Grails使用log4j,但是我认为Grails自带SLF4J绑定,所以这些< code>@Slf4j注释应该可以工作。我试着把< code > ' org . slf4j:slf4j-log4j 12:1 . 7 . 5 ' 放在我的编译路径上,但是这也不起作用(并且产生slf4j错误,抱怨类路径上有多个绑定;这证实了我的理论,即Grails自带SLF4J绑定)。
我需要做些什么才能让日志在这里工作?这是我需要的:
请注意:在Grails之外,我绝对喜欢logback。但是根据我的经验,我发现Grails Logback插件被严重破坏了,所以我对从log4j -切换过来不感兴趣
您是正确的,info'com.example.myapp'
本质上是com.example.myapp.*
的通配符,因此应该可以工作。我发现当日志记录不能按预期工作并且记录器的名称可能错误时,为记录器名称添加println语句通常会清除错误配置的内容。因此,例如在控制器或服务中,只需添加
println "logger name for ${getClass().name} is $log.name"
并在调用该控制器操作或服务方法后在控制台中查找该消息。
Spring Boot使用<code>LoggingApplicationListener<code>自动初始化底层日志记录系统。如果我正在开发的应用程序独立运行或独立运行,这是一件好事。 然而,我正在开发一个web应用程序,该应用程序将部署到WSO2应用程序服务器中,该服务器提供统一的日志记录(使用log4j),具有中央日志级别管理(在运行时通过web界面)、业务报告等功能。 如果我使用Spri
我试图自定义Grails应用程序的日志配置,但appender(及其布局模式)似乎被忽略了。 在配置中。非常棒: Log4J实际上考虑了logger部分(例如,如果我对hibernate的debug和trace行进行注释,那么hibernate语句的记录将按预期停止)。 但我一直在尝试appenders部分的不同版本,似乎都没有考虑,实际上应用于控制台的格式只包括消息本身(例如,如果我编写 在代码
每当我部署一个外部化配置有错误的生产应用程序时,我都会在Tomcat日志中收到以下消息: 显然,外部化的配置是在log4j被正确初始化之前处理的,因此没有附加程序可以接受来自的消息。 有没有办法预先初始化log4j,以便在标准Grails log4j初始化发生之前捕获这些消息?
问题内容: 我有一个log4J设置,其中根记录器应该将ERROR级别和更高级别的消息记录到控制台,另一个记录器将所有内容记录到syslog中。 log4j.properties是: 用代码我做 发生的事情是我获得了所有日志记录级别的控制台日志记录。似乎正在发生的事情是SGSearch的级别以某种方式覆盖了为根记录程序设置的级别。我不知道。 我已经确认Log4J正在读取我认为是的属性文件,并且没有其
我试图使用注释处理器来生成特定工厂接口的实现。这些接口如下所示: 和 注释处理器正在做正确的事情,并为每个匹配的类生成一个工厂,该工厂用相应的注释进行注释。 注释处理器的输出如下所示: 以及相应的其他类: 但是不能编译TestViewImFactory。错误消息是: “类'TestViewImplFactory'必须声明为抽象或在'ViewFactory'中实现抽象方法创建” Java说,以下是正
我创建了以下groovy脚本,以展示如何使用简单的注释将日志字段注入我们的类 当我运行groovy脚本时,我得到以下结果(在GROOVY CONSOLE上) 请告知我们如何将结果打印到WIN机器中的日志文件中,以及需要向groovy脚本中添加什么才能启用它? 例如: 日志文件 C: \程序文件\日志\我的。非常棒。日志 (应包含结果:)