栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

GlassFish 3:如何更改(默认)日志记录格式?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

GlassFish 3:如何更改(默认)日志记录格式?

我破解了一个简单的日志格式化程序(随意调整):

import java.io.PrintWriter;import java.io.StringWriter;import java.text.SimpleDateFormat;import java.util.Date;import java.util.logging.LogRecord;import java.util.logging.SimpleFormatter;public class JBossAS7LikeFormatter extends SimpleFormatter{    private final String nl = System.getProperty("line.separator");    private final DateFormat df = new SimpleDateFormat("HH:mm:ss,SSS");    @Override    public synchronized String format(LogRecord lr)    {        StringBuffer sb = new StringBuffer();        // time only        Date dt = new Date();        dt.setTime(lr.getMillis());        sb.append(df.format(dt));        sb.append(" ");        // level (longest is "WARNING" = 7 chars, space fill for level output)        String level = lr.getLevel().getName();        int numSpaces = 7 - level.length();        sb.append(level);        for ( int i = 0 ; i < numSpaces + 1 ; i++ )        { sb.append(" ");        }        // package        sb.append("[");        sb.append(lr.getSourceClassName());        sb.append("] ");        // thread (name?)        sb.append("(");        sb.append(lr.getThreadID());        sb.append(") ");        // message        sb.append(formatMessage(lr));        sb.append(nl);        // optional stack trace        if ( lr.getThrown() != null )        { try {     StringWriter sw = new StringWriter();     PrintWriter pw = new PrintWriter(sw);     lr.getThrown().printStackTrace(pw);     pw.close();     sb.append(sw.toString()); } catch ( Exception e ) { }        }        return sb.toString();    }}

它甚至修复了Windows计算机上的双换行符问题。


domain/lib/ext
首先
通过将JAR放入来使它起作用,但是对于较新的尝试,无论是什么原因,我现在只继续得到ClassNotFoundException:

Mrz 08, 2012 9:39:14 AM com.sun.enterprise.admin.launcher.GFLauncherLogger infoInformation: Successfully launched in 5 msec.Launching GlassFish on Felix platformException in thread "main" java.lang.reflect.InvocationTargetException    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)    at java.lang.reflect.Method.invoke(Method.java:601)    at com.sun.enterprise.glassfish.bootstrap.GlassFishMain.main(GlassFishMain.java:97)    at com.sun.enterprise.glassfish.bootstrap.ASMain.main(ASMain.java:55)Caused by: java.lang.NoClassDefFoundError: com/sun/enterprise/server/logging/UniformLogFormatter    at java.lang.ClassLoader.defineClass1(Native Method)    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)    at java.security.AccessController.doPrivileged(Native Method)    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)    at java.lang.ClassLoader.loadClass(ClassLoader.java:410)    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)    at java.util.logging.LogManager.getFormatterProperty(LogManager.java:1048)    at java.util.logging.StreamHandler.configure(StreamHandler.java:76)    at java.util.logging.StreamHandler.<init>(StreamHandler.java:94)    at java.util.logging.ConsoleHandler.<init>(ConsoleHandler.java:88)    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)    at java.lang.Class.newInstance0(Class.java:372)    at java.lang.Class.newInstance(Class.java:325)    at java.util.logging.LogManager$3.run(LogManager.java:419)    at java.security.AccessController.doPrivileged(Native Method)    at java.util.logging.LogManager.loadLoggerHandlers(LogManager.java:405)    at java.util.logging.LogManager.initializeGlobalHandlers(LogManager.java:1076)    at java.util.logging.LogManager.access$1100(LogManager.java:148)    at java.util.logging.LogManager$RootLogger.getHandlers(LogManager.java:1157)    at java.util.logging.Logger.log(Logger.java:521)    at com.sun.logging.LogDomains$1.log(LogDomains.java:372)    at java.util.logging.Logger.doLog(Logger.java:543)    at java.util.logging.Logger.log(Logger.java:587)    at com.sun.enterprise.server.logging.LogManagerService.postConstruct(LogManagerService.java:354)    at com.sun.hk2.component.AbstractCreatorImpl.inject(AbstractCreatorImpl.java:131)    at com.sun.hk2.component.ConstructorCreator.initialize(ConstructorCreator.java:91)    at com.sun.hk2.component.AbstractCreatorImpl.get(AbstractCreatorImpl.java:82)    at com.sun.hk2.component.SingletonInhabitant.get(SingletonInhabitant.java:67)    at com.sun.hk2.component.EventPublishingInhabitant.get(EventPublishingInhabitant.java:139)    at com.sun.hk2.component.AbstractInhabitantImpl.get(AbstractInhabitantImpl.java:78)    at com.sun.enterprise.v3.server.AppServerStartup.run(AppServerStartup.java:229)    at com.sun.enterprise.v3.server.AppServerStartup.doStart(AppServerStartup.java:145)    at com.sun.enterprise.v3.server.AppServerStartup.start(AppServerStartup.java:136)    at com.sun.enterprise.glassfish.bootstrap.GlassFishImpl.start(GlassFishImpl.java:79)    at com.sun.enterprise.glassfish.bootstrap.GlassFishDecorator.start(GlassFishDecorator.java:63)    at com.sun.enterprise.glassfish.bootstrap.osgi.OSGiGlassFishImpl.start(OSGiGlassFishImpl.java:69)    at com.sun.enterprise.glassfish.bootstrap.GlassFishMain$Launcher.launch(GlassFishMain.java:117)    ... 6 moreCaused by: java.lang.ClassNotFoundException: com.sun.enterprise.server.logging.UniformLogFormatter    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)    at java.security.AccessController.doPrivileged(Native Method)    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)    ... 53 moreCompleted shutdown of GlassFish runtimeCommand start-domain failed.The DAS was stopped.

我尝试了几次,然后看到了新格式,但是它停止工作了-很奇怪。

我已经在原始GlassFish论坛帖子中附加了JAR。我基本上只是使用我的ZIP工具并将其重命名为JAR,但这应该不是问题(?)。如果有人再次使用它,请告诉我。

注意:我正在使用GlassFish插件来启动/停止服务器,不知道这是否可能是一个问题。


继续在以下GlassFish论坛中进行任何讨论:http :
//www.java.net/forum/topic/glassfish/glassfish/configuring-glassfish-logging-
format

PS:抱歉,由于GF论坛已损坏,我需要在此处发布堆栈跟踪。

更新

扩展java.util.logging.SimpleFormatter可以达到目的。GlassFish现在生成如下日志条目:

12:13:02,400 INFO    [com.sun.enterprise.web.WebContainer] (1) WEB0172: Virtual server [server] loaded default web module []12:13:07,700 INFO    [org.hibernate.validator.util.Version] (1) Hibernate Validator 4.2.0.Final12:13:08,919 WARNING [null] (1) Multiple [2] JMX MBeanServer instances exist, we will use the server at index [0] : [com.sun.enterprise.v3.admin.DynamicInterceptor@1a53cab6].12:13:08,920 WARNING [null] (1) JMX MBeanServer in use: [com.sun.enterprise.v3.admin.DynamicInterceptor@1a53cab6] from index [0] 12:13:08,920 WARNING [null] (1) JMX MBeanServer in use: [com.sun.jmx.mbeanserver.JmxMBeanServer@2f740f7e] from index [1]

同样,在Windows上:没有双换行符。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419369.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号