📄 filelogging.java
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
// Source File Name: FileLogging.java
package org.gudy.azureus2.core3.logging.impl;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
import org.gudy.azureus2.core3.config.COConfigurationListener;
import org.gudy.azureus2.core3.config.ParameterListener;
import org.gudy.azureus2.core3.config.impl.ConfigurationManager;
import org.gudy.azureus2.core3.logging.*;
import org.gudy.azureus2.core3.util.Debug;
// Referenced classes of package org.gudy.azureus2.core3.logging.impl:
// FileLoggingAdapter
public class FileLogging
implements ILogEventListener
{
public static final String LOG_FILE_NAME = "az.log";
public static final String BAK_FILE_NAME = "az.log.bak";
public static LogIDs configurableLOGIDs[];
private static final String CFG_ENABLELOGTOFILE = "Logging Enable";
private boolean bLogToFile;
private boolean bLogToFileErrorPrinted;
private String sLogDir;
private int iLogFileMaxMB;
private ArrayList ignoredComponents[];
private ArrayList listeners;
private SimpleDateFormat format;
private PrintWriter logFilePrinter;
private static final int DEFPADDING = 100;
private int lastWidth;
public FileLogging()
{
bLogToFile = false;
bLogToFileErrorPrinted = false;
sLogDir = "";
iLogFileMaxMB = 1;
ignoredComponents = new ArrayList[3];
listeners = new ArrayList();
lastWidth = 100;
}
public void initialize()
{
ConfigurationManager config = ConfigurationManager.getInstance();
boolean overrideLog = System.getProperty("azureus.overridelog") != null;
for (int i = 0; i < ignoredComponents.length; i++)
ignoredComponents[i] = new ArrayList();
if (!overrideLog)
config.addListener(new COConfigurationListener() {
final FileLogging this$0;
public void configurationSaved()
{
checkLoggingConfig();
}
{
this$0 = FileLogging.this;
super();
}
});
checkLoggingConfig();
config.addParameterListener("Logging Enable", new ParameterListener() {
final FileLogging this$0;
public void parameterChanged(String parameterName)
{
reloadLogToFileParam();
}
{
this$0 = FileLogging.this;
super();
}
});
}
protected void reloadLogToFileParam()
{
ConfigurationManager config = ConfigurationManager.getInstance();
boolean bNewLogToFile = System.getProperty("azureus.overridelog") != null || config.getBooleanParameter("Logging Enable");
if (bNewLogToFile != bLogToFile)
{
bLogToFile = bNewLogToFile;
if (bLogToFile)
{
Logger.addListener(this);
} else
{
Logger.removeListener(this);
synchronized (org/gudy/azureus2/core3/logging/Logger)
{
checkAndSwapLog();
}
}
}
}
private void checkLoggingConfig()
{
try
{
ConfigurationManager config = ConfigurationManager.getInstance();
boolean overrideLog = System.getProperty("azureus.overridelog") != null;
String timeStampFormat;
if (overrideLog)
{
sLogDir = System.getProperty("azureus.overridelogdir", ".");
iLogFileMaxMB = 2;
timeStampFormat = "HH:mm:ss.SSS ";
for (int i = 0; i < ignoredComponents.length; i++)
ignoredComponents[i].clear();
reloadLogToFileParam();
} else
{
reloadLogToFileParam();
sLogDir = config.getStringParameter("Logging Dir", "");
iLogFileMaxMB = config.getIntParameter("Logging Max Size");
timeStampFormat = (new StringBuilder()).append(config.getStringParameter("Logging Timestamp")).append(" ").toString();
for (int i = 0; i < ignoredComponents.length; i++)
{
ignoredComponents[i].clear();
int logType = indexToLogType(i);
for (int j = 0; j < configurableLOGIDs.length; j++)
if (!config.getBooleanParameter((new StringBuilder()).append("bLog.").append(logType).append(".").append(configurableLOGIDs[j]).toString(), true))
ignoredComponents[i].add(configurableLOGIDs[j]);
}
}
synchronized (org/gudy/azureus2/core3/logging/Logger)
{
format = new SimpleDateFormat(timeStampFormat);
checkAndSwapLog();
}
}
catch (Throwable t)
{
Debug.printStackTrace(t);
}
}
private void logToFile(String str)
{
if (!bLogToFile)
return;
String dateStr = format.format(new Date());
synchronized (org/gudy/azureus2/core3/logging/Logger)
{
if (logFilePrinter != null)
{
logFilePrinter.print(dateStr);
logFilePrinter.print(str);
logFilePrinter.flush();
}
checkAndSwapLog();
}
}
private void checkAndSwapLog()
{
if (!bLogToFile)
{
if (logFilePrinter != null)
{
logFilePrinter.close();
logFilePrinter = null;
}
return;
}
long lMaxBytes = (iLogFileMaxMB * 1024 * 1024) / 2;
File logFile = new File((new StringBuilder()).append(sLogDir).append(File.separator).append("az.log").toString());
if (logFile.length() > lMaxBytes && logFilePrinter != null)
{
File back_name = new File((new StringBuilder()).append(sLogDir).append(File.separator).append("az.log.bak").toString());
logFilePrinter.close();
logFilePrinter = null;
if (!back_name.exists() || back_name.delete())
if (!logFile.renameTo(back_name))
logFile.delete();
else
logFile.delete();
}
if (logFilePrinter == null)
try
{
logFilePrinter = new PrintWriter(new FileWriter(logFile, true));
}
catch (IOException e)
{
if (!bLogToFileErrorPrinted)
{
bLogToFileErrorPrinted = true;
Debug.out((new StringBuilder()).append("Unable to write to log file: ").append(logFile).toString());
Debug.printStackTrace(e);
}
}
}
private int logTypeToIndex(int entryType)
{
switch (entryType)
{
case 0: // '\0'
return 0;
case 1: // '\001'
return 1;
case 3: // '\003'
return 2;
case 2: // '\002'
default:
return 0;
}
}
private int indexToLogType(int index)
{
switch (index)
{
case 0: // '\0'
return 0;
case 1: // '\001'
return 1;
case 2: // '\002'
return 3;
}
return 0;
}
public void log(LogEvent event)
{
if (ignoredComponents[logTypeToIndex(event.entryType)].contains(event.logID))
return;
StringBuffer text = new StringBuffer(event.text.length());
text.append(event.entryType).append(" ");
padAndAppend(text, event.logID.toString(), 8, 1);
if (event.relatedTo != null)
{
lastWidth = padAndAppend(text, event.text, lastWidth, 1);
if (lastWidth > 200)
lastWidth = 200;
for (int i = 0; i < event.relatedTo.length; i++)
{
Object obj = event.relatedTo[i];
if (obj != null)
{
if (i > 0)
text.append("; ");
if (obj instanceof LogRelation)
text.append(((LogRelation)obj).getRelationText());
else
text.append("RelatedTo[").append(obj.toString()).append("]");
}
}
} else
{
text.append(event.text);
lastWidth = 100;
}
if (event.text == null || !event.text.endsWith("\n"))
text.append("\r\n");
boolean okToLog = true;
FileLoggingAdapter listener;
for (Iterator iter = listeners.iterator(); iter.hasNext() && okToLog; okToLog = listener.logToFile(event, text))
listener = (FileLoggingAdapter)iter.next();
logToFile(text.toString());
}
private int padAndAppend(StringBuffer appendTo, String s, int width, int growBy)
{
if (s == null)
s = "null";
appendTo.append(s);
int sLen = s.length();
int len;
for (len = width - sLen; len <= 0; len += growBy);
char padding[] = new char[len];
if (len > 5)
{
for (int i = 0; i < len; i += 2)
padding[i] = ' ';
for (int i = 1; i < len; i += 2)
padding[i] = '.';
} else
{
for (int i = 0; i < len; i++)
padding[i] = ' ';
}
appendTo.append(padding);
return len + sLen;
}
public void addListener(FileLoggingAdapter listener)
{
if (!listeners.contains(listener))
listeners.add(listener);
}
public void removeListener(FileLoggingAdapter listener)
{
listeners.remove(listener);
}
public List getListeners()
{
return listeners;
}
static
{
configurableLOGIDs = (new LogIDs[] {
LogIDs.STDOUT, LogIDs.ALERT, LogIDs.CORE, LogIDs.DISK, LogIDs.GUI, LogIDs.NET, LogIDs.NWMAN, LogIDs.PEER, LogIDs.PLUGIN, LogIDs.TRACKER,
LogIDs.CACHE, LogIDs.PIECES
});
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -