import java.util.logging.Logger;public class testlog { private final static Logger log = Logger.getLogger(testlog.class.getname()); public static voID main(String[] args) { System.setProperty("java.util.logging.SimpleFormatter.format","[%1$tF %1$tT]:%4$s:(%2$s): %5$s%n"); log.info("logging test"); }}
执行:
$java testlog[2014-01-18 11:08:51]:INFO:(testlog main): logging test
testlog.groovy:
import java.util.logging.Logger;public class testlog { private final static Logger log = Logger.getLogger("testlog"); public static voID main(String[] args) { System.setProperty("java.util.logging.SimpleFormatter.format",'[%1$tF %1$tT]:%4$s:(%2$s): %5$s%n'); log.info("logging test"); }}
执行:
$groovy testlog[2014-01-18 11:11:23]:INFO:(java_util_logging_Logger$info call): logging test
如何为类/方法名称而不是“java_util_logging_Logger $info call”配置groovy?
解决方法 一般来说,Groovy在字节码中使用CallSite
.上面提到的Groovy代码将编译为以下格式的字节码: import groovy.lang.GroovyObject;import groovy.lang.MetaClass;import java.util.logging.Logger;import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;import org.codehaus.groovy.runtime.callsite.CallSite;public class testlog implements GroovyObject{ private static final Logger log; static { __$swAPInit();long l1 = 0L;__timeStamp__239_neverHappen1390064566496 = l1; long l2 = 1390064566495L;__timeStamp = l2; Object localObject = $getCallSiteArray() [2].call(Logger.class,"testlog");log = (Logger)ScriptBytecodeAdapter.castToType(localObject,Logger.class); } public static voID main(String... args) { CallSite[] arrayOfCallSite = $getCallSiteArray();arrayOfCallSite[0].call(System.class,"java.util.logging.SimpleFormatter.format","[%1$tF %1$tT]:%4$s:(%2$s): %5$s%n"); arrayOfCallSite[1].call(log,"logging test"); } public testlog() { testlog this; CallSite[] arrayOfCallSite = $getCallSiteArray(); MetaClass localMetaClass = $getStaticMetaClass(); this.MetaClass = localMetaClass; }}
因此,它指的是格式化程序引用时的Log类.要解决此问题,您可以在类级别使用CompileStatic
注释,它将源代码转换为普通Java约定中的字节码.
以下是脚本的外观(注意: – 类名是CamelCase):
import java.util.logging.Loggerimport groovy.transform.CompileStatic@CompileStaticpublic class Testlog { private final static Logger log = Logger.getLogger("testlog") public static voID main(String[] args) { System.setProperty("java.util.logging.SimpleFormatter.format",'[%1$tF %1$tT]:%4$s:(%2$s): %5$s%n') log.info("logging test") }}总结
以上是内存溢出为你收集整理的如何在groovy中为类/方法名配置java.util.logging?全部内容,希望文章能够帮你解决如何在groovy中为类/方法名配置java.util.logging?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)