我想在特定的appender中输出我的包或类的日志输出。 但是所有内容都打印在root-logger上。
这是我的配置:
log4j = {
appenders {
console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
file name:'grailslog', file:'grails.log', threshold:org.apache.log4j.Level.DEBUG
file name:'mylog', file:'mylog.log', threshold:org.apache.log4j.Level.DEBUG
}
error 'org.codehaus.groovy.grails.web.servlet', // controllers
'org.codehaus.groovy.grails.web.pages', // GSP
'org.codehaus.groovy.grails.web.sitemesh', // layouts
'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
'org.codehaus.groovy.grails.web.mapping', // URL mapping
'org.codehaus.groovy.grails.commons', // core / classloading
'org.codehaus.groovy.grails.plugins', // plugins
'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
'org.springframework',
'org.hibernate',
'net.sf.ehcache.hibernate'
warn 'org.mortbay.log'
debug 'grails.app'
debug mylog: 'my.package', additivity: true
root {
error 'grailslog'
additivity = true
}
}
我也尝试过这种语法:
log4j = {
appender.stdout = "org.apache.log4j.ConsoleAppender"
appender.'stdout.layout'="org.apache.log4j.PatternLayout"
appender.'stdout.layout.ConversionPattern'='[%r] %c{2} %m%n'
appender.mylog= "org.apache.log4j.DailyRollingFileAppender"
appender.'mylog.File' = "mylog.log"
appender.'mylog.layout' = "org.apache.log4j.PatternLayout"
appender.'mylog.layout.ConversionPattern' = '%d{[ dd.MM.yy HH:mm:ss.SSS]} [%t] %-5p %c %x - %m%n'
appender.grailslog = "org.apache.log4j.DailyRollingFileAppender"
appender.'grailslog.File' = "grails.log"
appender.'grailslog.layout' = "org.apache.log4j.PatternLayout"
appender.'grailslog.layout.ConversionPattern' = '%d{[ dd.MM.yy HH:mm:ss.SSS]} [%t] %-5p %c %x - %m%n'
rootLogger="error,stdout,grailslog"
logger {
grails="info,stdout,grailslog"
my.package="debug,mylog"
}
}
但是目前的grails版本不再适用。
简短更新:
Grails有一个新的log-DSL文档(特定于域的语言)。 因此,上面的代码语法错误。
他们写道:
...记录器的名称是'grails.app。(type)。(className)'...
答案 0 :(得分:2)
我设法使用了我的其他日志文件。
我没有使用带有包名称的记录器,而是使用了自定义名称并用此初始化了我的记录器。
debug mylog: 'myLog', additivity: true
[...]
def log = Logger.getLogger("myLog")
答案 1 :(得分:0)
我已添加了每个环境日志记录,因此我的生产日志会转到文件/电子邮件& dev去stdout
environments {
development {
debug 'grails.app', 'stdout'
//trace 'org.hibernate.type'
}
production {
appenders {
file name: "file", file: "/var/log/myapp.log"
appender new SMTPAppender(name: 'smtp', to: mail.error.to, from: mail.error.from,
subject: mail.error.subject, threshold: Level.ERROR,
SMTPHost: mail.error.server, SMTPUsername: mail.error.username,
SMTPDebug: mail.error.debug.toString(), SMTPPassword: mail.error.password,
layout: pattern(conversionPattern:
'%d{[ dd.MM.yyyy HH:mm:ss.SSS]} [%t] %n%-5p %n%c %n%C %n %x %n %m%n'))
}
root {
error 'stdout', 'smtp','file'
additivity = true
}
}
}