如何在groovy中为类/方法名配置java.util.logging?
发布时间:2020-12-14 16:22:13 所属栏目:大数据 来源:网络整理
导读:testlog. java: 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.SimpleFormat
testlog.
java:
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类.要解决此问题,您可以在类级别使用 以下是脚本的外观(注意: – 类名是CamelCase): import java.util.logging.Logger import groovy.transform.CompileStatic @CompileStatic 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") } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |