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

📄 aediagnosticslogger.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:   AEDiagnosticsLogger.java

package org.gudy.azureus2.core3.util;

import java.io.*;
import java.util.*;

// Referenced classes of package org.gudy.azureus2.core3.util:
//			AEDiagnostics, Constants

public class AEDiagnosticsLogger
{

	private static final int MAX_PENDING = 8192;
	private String name;
	private int max_size;
	private File debug_dir;
	private boolean first_file;
	private boolean first_write;
	private LinkedList pending;
	private int pending_size;
	private boolean direct_writes;

	protected AEDiagnosticsLogger(File _debug_dir, String _name, int _max_size, boolean _direct_writes)
	{
		first_file = true;
		first_write = true;
		debug_dir = _debug_dir;
		name = _name;
		max_size = _max_size;
		direct_writes = _direct_writes;
		try
		{
			File f1 = getLogFile();
			first_file = false;
			File f2 = getLogFile();
			first_file = true;
			if (f1.exists() && f2.exists() && f1.lastModified() < f2.lastModified())
				first_file = false;
		}
		catch (Throwable ignore) { }
	}

	protected String getName()
	{
		return name;
	}

	public void log(Throwable e)
	{
		try
		{
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			PrintWriter pw = new PrintWriter(new OutputStreamWriter(baos));
			e.printStackTrace(pw);
			pw.close();
			log(baos.toString());
		}
		catch (Throwable ignore) { }
	}

	public void logAndOut(String str)
	{
		logAndOut(str, false);
	}

	public void logAndOut(String str, boolean stderr)
	{
		if (stderr)
			System.err.println(str);
		else
			System.out.println(str);
		log(str);
	}

	public void logAndOut(Throwable e)
	{
		e.printStackTrace();
		log(e);
	}

	public void log(String _str)
	{
		StringBuilder str;
label0:
		{
			if (!AEDiagnostics.loggers_enabled)
				return;
			Calendar now = GregorianCalendar.getInstance();
			str = new StringBuilder(_str.length() + 20);
			String timeStamp = (new StringBuilder()).append("[").append(format(now.get(5))).append(format(now.get(2) + 1)).append(" ").append(format(now.get(11))).append(":").append(format(now.get(12))).append(":").append(format(now.get(13))).append("] ").toString();
			synchronized (this)
			{
				if (first_write)
				{
					first_write = false;
					str.append("\r\n[");
					str.append(now.get(1));
					str.append("] Log File Opened for ");
					str.append(Constants.APP_NAME);
					str.append(" ");
					str.append("4.2.0.0");
					str.append("\r\n");
				}
				str.append(timeStamp);
				str.append(_str);
				if (direct_writes)
					break label0;
				if (pending == null)
					pending = new LinkedList();
				pending.add(str);
				pending_size += str.length();
				if (pending_size > 8192)
					writePending();
			}
			return;
		}
		write(str);
		aediagnosticslogger;
		JVM INSTR monitorexit ;
		  goto _L1
		exception;
		throw exception;
_L1:
	}

	private void write(StringBuilder str)
	{
label0:
		{
			PrintWriter pw = null;
			try
			{
				File log_file = getLogFile();
				if (log_file.length() >= (long)max_size)
				{
					first_file = !first_file;
					log_file = getLogFile();
					log_file.delete();
				}
				pw = new PrintWriter(new FileWriter(log_file, true));
				pw.println(str);
			}
			catch (Throwable e)
			{
				if (pw != null)
					pw.close();
				break label0;
			}
			finally
			{
				if (pw != null)
					pw.close();
				throw exception;
			}
			if (pw != null)
				pw.close();
			break label0;
		}
	}

	protected void writePending()
	{
label0:
		{
			synchronized (this)
			{
				if (pending != null)
					break label0;
			}
			return;
		}
label1:
		{
			PrintWriter pw = null;
			try
			{
				File log_file = getLogFile();
				if (log_file.length() >= (long)max_size)
				{
					first_file = !first_file;
					log_file = getLogFile();
					log_file.delete();
				}
				pw = new PrintWriter(new FileWriter(log_file, true));
				StringBuilder str;
				for (Iterator i$ = pending.iterator(); i$.hasNext(); pw.println(str))
					str = (StringBuilder)i$.next();

			}
			catch (Throwable e)
			{
				direct_writes = true;
				pending = null;
				if (pw != null)
					pw.close();
				break label1;
			}
			finally
			{
				direct_writes = true;
				pending = null;
				if (pw != null)
					pw.close();
				throw exception;
			}
			direct_writes = true;
			pending = null;
			if (pw != null)
				pw.close();
			break label1;
		}
		aediagnosticslogger;
		JVM INSTR monitorexit ;
		  goto _L1
		exception1;
		throw exception1;
_L1:
	}

	private File getLogFile()
	{
		return new File(debug_dir, (new StringBuilder()).append(getName()).append("_").append(first_file ? "1" : "2").append(".log").toString());
	}

	private static String format(int n)
	{
		if (n < 10)
			return (new StringBuilder()).append("0").append(n).toString();
		else
			return String.valueOf(n);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -