⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filelogging.java

📁 java 文件下载器。可自定义
💻 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 + -