日志记录 – Groovy Script和log4j
在这里搜索,寻找一个在Groovy脚本中记录log4j文件的工作示例.
没有明确的类(它只是一个脚本). 只是一个简单的groovy脚本与log4j. log4j最适合这个(groovy)还是其他日志库? 有人可以指点一下吗?我设法得到它到控制台,但不是文件. 如果log4j配置在config.groovy文件中,那么将会很好,因为我正在使用配置文件进行其他操作. UPDATE 感谢neversleepz的例子,我有以下工作很好: config.groovy文件: log4j { appender.stdout = "org.apache.log4j.ConsoleAppender" appender."stdout.layout"="org.apache.log4j.PatternLayout" appender.scrlog = "org.apache.log4j.FileAppender" appender."scrlog.layout"="org.apache.log4j.PatternLayout" appender."scrlog.layout.ConversionPattern"="%d %5p %c{1}:%L - %m%n" appender."scrlog.file"="rootscript.log" rootLogger = "debug,scrlog,stdout" } 和我的脚本: import org.apache.log4j.* import groovy.util.logging.* def config = new ConfigSlurper().parse(new File('config.groovy').toURL()) PropertyConfigurator.configure(config.toProperties()) Logger log = Logger.getInstance(getClass()) // Need to set log level as described here: // http://groovy.329449.n5.nabble.com/log4j-annotation-not-working-td4368806.html log.level = Level.INFO // this will NOT print/write as the loglevel is info log.debug 'Executing Script.' // this will print log.info 'Simple sample to show log INFO field is injected.' log.warn 'Simple sample to show log WARN field is injected.' log.error 'Simple sample to show log ERR field is injected.' 感谢这个! 我也配置了一个RollingFileAppender,而DailyRollingFileAppender也会把它们放在这里: log4j { // appender.stdout = "org.apache.log4j.ConsoleAppender" appender."stdout.layout"="org.apache.log4j.PatternLayout" // appender.scrlog = "org.apache.log4j.DailyRollingFileAppender" appender."scrlog.DatePattern"="'.'yyyy-MM-dd" appender."scrlog.Append"="true" appender."scrlog.File"="rootscript.log" appender."scrlog.layout"="org.apache.log4j.PatternLayout" appender."scrlog.layout.ConversionPattern"="%d %5p %c{1}:%L - %m%n" rootLogger="debug,stdout" } 和 log4j { // appender.stdout = "org.apache.log4j.ConsoleAppender" appender."stdout.layout"="org.apache.log4j.PatternLayout" // appender.scrlog = "org.apache.log4j.DailyRollingFileAppender" appender."scrlog.DatePattern"="'.'yyyy-MM-dd" appender."scrlog.Append"="true" appender."scrlog.File"="rootscript.log" appender."scrlog.layout"="org.apache.log4j.PatternLayout" appender."scrlog.layout.ConversionPattern"="%d %5p %c{1}:%L - %m%n" rootLogger="debug,stdout" logger.ProcessLogger="debug,scrlog" } 解决方法
以下是使用@Grab拉入log4j lib的简单示例,然后使用内置的Groovy的@ Log4j注释来连接日志变量.
然后,您可以在脚本中配置记录器并添加FileAppender @Grab('log4j:log4j:1.2.17') import org.apache.log4j.* import groovy.util.logging.* @Log4j class HelloWorld{ def execute() { // Need to set log level as described here: // http://groovy.329449.n5.nabble.com/log4j-annotation-not-working-td4368806.html log.level = Level.INFO // add an appender to log to file log.addAppender(new FileAppender(new TTCCLayout(),'myscript.log')); // this will NOT print/write as the loglevel is info log.debug 'Execute HelloWorld.' // this will print log.info 'Simple sample to show log field is injected.' } } def helloWorld = new HelloWorld() helloWorld.execute() 运行时,您将在myscript.log中看到这一点 11 [main] INFO HelloWorld - Simple sample to show log field is injected. 不幸的是,config.groovy文件记录器配置是specific to Grails.由于您不在Grails中,DSL不在于解释log4j内容.不过请看看在Groovy中的ConfigSlurper,看起来它会为您提供类似的DSL来引入您的配置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |