Các giải pháp có vẻ là người đầu tiên SO đăng ở đây: Install log formater in glassfish
Tôi đã bị tấn cùng một định dạng log đơn giản (điều chỉnh theo ý muốn):
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();
}
}
Nó thậm chí sửa chữa vấn đề xuống dòng đôi trên các máy Windows.
tôi để làm việc này bằng cách đặt JAR vào domain/lib/ext
tại đầu tiên, nhưng đối với cố gắng mới hơn, bất kể lý do là, tôi chỉ giữ được một ClassNotFoundException bây giờ:
Mrz 08, 2012 9:39:14 AM com.sun.enterprise.admin.launcher.GFLauncherLogger info
Information: Successfully launched in 5 msec.
Launching GlassFish on Felix platform
Exception 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 more
Caused 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 more
Completed shutdown of GlassFish runtime
Command start-domain failed.
The DAS was stopped.
tôi thấy định dạng mới cho một vài lần thử, nhưng nó ngừng hoạt động - lạ.
Tôi đã đính kèm JAR như trong bài đăng trên diễn đàn GlassFish ban đầu của tôi. Tôi đã về cơ bản chỉ sử dụng công cụ ZIP của tôi và đổi tên nó thành JAR, nhưng điều này không phải là một vấn đề (?). Nếu có ai đó làm việc (một lần nữa) xin vui lòng cho tôi biết.
Lưu ý: Tôi đang sử dụng plugin GlassFish để khởi động/dừng máy chủ, không biết đây có phải là vấn đề hay không.
Hãy tiếp tục bất kỳ cuộc thảo luận trong diễn đàn GlassFish đây: http://www.java.net/forum/topic/glassfish/glassfish/configuring-glassfish-logging-format
PS: xin lỗi tôi cần phải đăng stack trace ở đây là diễn đàn GF là hơi bị hỏng.
CẬP NHẬT:
Mở rộng java.util.logging.SimpleFormatter đã làm các trick. GlassFish hiện tạo các mục nhập nhật ký như:
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.Final
12:13:08,919 WARNING [null] (1) Multiple [2] JMX MBeanServer instances exist, we will use the server at index [0] : [[email protected]].
12:13:08,920 WARNING [null] (1) JMX MBeanServer in use: [[email protected]] from index [0]
12:13:08,920 WARNING [null] (1) JMX MBeanServer in use: [[email protected]] from index [1]
Một lần nữa, trên Windows: không có dòng mới kép.
Trùng lặp: [http://stackoverflow.com/questions/9556503/reducing-line-width-of-glassfish-log](http://stackoverflow.com/questions/9556503/reducing-line-width-of -glassfish-log) – TPete
Thực sự chỉ trao đổi định dạng có vẻ nhẹ hơn nhiều, hãy xem liên kết "FYI" đầu tiên mà tôi đăng, tác phẩm này, nhưng rõ ràng là tôi đã bỏ lỡ nó. – Kawu
Lưu ý rằng định dạng ghi nhật ký không được chọn cho con người nhưng đối với trang Quản trị có thể thực hiện tất cả các loại nội dung lạ mắt bằng nhật ký. Nếu bạn thay đổi định dạng ghi nhật ký, bạn sẽ phá vỡ trang Quản trị. –