This commit is contained in:
Redkale
2020-01-07 16:28:11 +08:00
parent ad1d9f33d4
commit 539ea15ae5

View File

@@ -46,19 +46,19 @@ public class LogFileHandler extends Handler {
private static final String format = "%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS.%tL %4$s %2$s\r\n%5$s%6$s\r\n"; private static final String format = "%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS.%tL %4$s %2$s\r\n%5$s%6$s\r\n";
@Override @Override
public String format(LogRecord record) { public String format(LogRecord log) {
String source; String source;
if (record.getSourceClassName() != null) { if (log.getSourceClassName() != null) {
source = record.getSourceClassName(); source = log.getSourceClassName();
if (record.getSourceMethodName() != null) { if (log.getSourceMethodName() != null) {
source += " " + record.getSourceMethodName(); source += " " + log.getSourceMethodName();
} }
} else { } else {
source = record.getLoggerName(); source = log.getLoggerName();
} }
String message = formatMessage(record); String message = formatMessage(log);
String throwable = ""; String throwable = "";
if (record.getThrown() != null) { if (log.getThrown() != null) {
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw) { PrintWriter pw = new PrintWriter(sw) {
@Override @Override
@@ -67,22 +67,22 @@ public class LogFileHandler extends Handler {
} }
}; };
pw.println(); pw.println();
record.getThrown().printStackTrace(pw); log.getThrown().printStackTrace(pw);
pw.close(); pw.close();
throwable = sw.toString(); throwable = sw.toString();
} }
return String.format(format, return String.format(format,
System.currentTimeMillis(), System.currentTimeMillis(),
source, source,
record.getLoggerName(), log.getLoggerName(),
record.getLevel().getName(), log.getLevel().getName(),
message, message,
throwable); throwable);
} }
} }
protected final LinkedBlockingQueue<LogRecord> records = new LinkedBlockingQueue(); protected final LinkedBlockingQueue<LogRecord> logqueue = new LinkedBlockingQueue();
private String pattern; private String pattern;
@@ -144,9 +144,9 @@ public class LogFileHandler extends Handler {
public void run() { public void run() {
while (true) { while (true) {
try { try {
LogRecord record = records.take(); LogRecord log = logqueue.take();
final boolean bigger = (limit > 0 && limit <= loglength.get()); final boolean bigger = (limit > 0 && limit <= loglength.get());
final boolean changeday = tomorrow <= record.getMillis(); final boolean changeday = tomorrow <= log.getMillis();
if (bigger || changeday) { if (bigger || changeday) {
updateTomorrow(); updateTomorrow();
if (logstream != null) { if (logstream != null) {
@@ -193,12 +193,12 @@ public class LogFileHandler extends Handler {
logunusualstream = new FileOutputStream(logunusualfile, append); logunusualstream = new FileOutputStream(logunusualfile, append);
} }
//----------------------写日志------------------------- //----------------------写日志-------------------------
String message = getFormatter().format(record); String message = getFormatter().format(log);
String encoding = getEncoding(); String encoding = getEncoding();
byte[] bytes = encoding == null ? message.getBytes() : message.getBytes(encoding); byte[] bytes = encoding == null ? message.getBytes() : message.getBytes(encoding);
logstream.write(bytes); logstream.write(bytes);
loglength.addAndGet(bytes.length); loglength.addAndGet(bytes.length);
if (unusual != null && (record.getLevel() == Level.WARNING || record.getLevel() == Level.SEVERE)) { if (unusual != null && (log.getLevel() == Level.WARNING || log.getLevel() == Level.SEVERE)) {
logunusualstream.write(bytes); logunusualstream.write(bytes);
logunusuallength.addAndGet(bytes.length); logunusuallength.addAndGet(bytes.length);
} }
@@ -310,21 +310,21 @@ public class LogFileHandler extends Handler {
} }
@Override @Override
public void publish(LogRecord record) { public void publish(LogRecord log) {
final String sourceClassName = record.getSourceClassName(); final String sourceClassName = log.getSourceClassName();
if (sourceClassName == null || true) { if (sourceClassName == null || true) {
StackTraceElement[] ses = new Throwable().getStackTrace(); StackTraceElement[] ses = new Throwable().getStackTrace();
for (int i = 2; i < ses.length; i++) { for (int i = 2; i < ses.length; i++) {
if (ses[i].getClassName().startsWith("java.util.logging")) continue; if (ses[i].getClassName().startsWith("java.util.logging")) continue;
record.setSourceClassName('[' + Thread.currentThread().getName() + "] " + ses[i].getClassName()); log.setSourceClassName('[' + Thread.currentThread().getName() + "] " + ses[i].getClassName());
record.setSourceMethodName(ses[i].getMethodName()); log.setSourceMethodName(ses[i].getMethodName());
break; break;
} }
} else { } else {
record.setSourceClassName('[' + Thread.currentThread().getName() + "] " + sourceClassName); log.setSourceClassName('[' + Thread.currentThread().getName() + "] " + sourceClassName);
} }
if (denyreg != null && denyreg.matcher(record.getMessage()).find()) return; if (denyreg != null && denyreg.matcher(log.getMessage()).find()) return;
records.offer(record); logqueue.offer(log);
} }
@Override @Override