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

📄 log.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:   Log.java

package org.gudy.azureus2.ui.console.commands;

import com.aelitis.azureus.core.AzureusCore;
import java.io.IOException;
import java.io.PrintStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.log4j.Appender;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.varia.DenyAllFilter;
import org.gudy.azureus2.plugins.PluginInterface;
import org.gudy.azureus2.plugins.PluginManager;
import org.gudy.azureus2.plugins.logging.LoggerChannel;
import org.gudy.azureus2.plugins.logging.LoggerChannelListener;
import org.gudy.azureus2.ui.console.ConsoleInput;

// Referenced classes of package org.gudy.azureus2.ui.console.commands:
//			OptionsConsoleCommand

public class Log extends OptionsConsoleCommand
{

	private Map channel_listener_map;

	public Log()
	{
		super("log", "l");
		channel_listener_map = new HashMap();
	}

	protected Options getOptions()
	{
		Options options = new Options();
		options.addOption(new Option("f", "filename", true, "filename to write log to"));
		return options;
	}

	public void execute(String commandName, final ConsoleInput ci, CommandLine commandLine)
	{
		Appender con = Logger.getRootLogger().getAppender("ConsoleAppender");
		List args = commandLine.getArgList();
		if (con != null && !args.isEmpty())
		{
			String subcommand = (String)args.get(0);
			if ("off".equalsIgnoreCase(subcommand))
			{
				if (args.size() == 1)
				{
					con.addFilter(new DenyAllFilter());
					ci.out.println("> Console logging off");
				} else
				{
					String name = (String)args.get(1);
					Object entry[] = (Object[])(Object[])channel_listener_map.remove(name);
					if (entry == null)
					{
						ci.out.println((new StringBuilder()).append("> Channel '").append(name).append("' not being logged").toString());
					} else
					{
						((LoggerChannel)entry[0]).removeListener((LoggerChannelListener)entry[1]);
						ci.out.println((new StringBuilder()).append("> Channel '").append(name).append("' logging off").toString());
					}
				}
			} else
			if ("on".equalsIgnoreCase(subcommand))
			{
				if (args.size() == 1)
				{
					if (commandLine.hasOption('f'))
					{
						String filename = commandLine.getOptionValue('f');
						try
						{
							Appender newAppender = new FileAppender(new PatternLayout("%d{ISO8601} %c{1}-%p: %m%n"), filename, true);
							newAppender.setName("ConsoleAppender");
							Logger.getRootLogger().removeAppender(con);
							Logger.getRootLogger().addAppender(newAppender);
							ci.out.println((new StringBuilder()).append("> Logging to filename: ").append(filename).toString());
						}
						catch (IOException e)
						{
							ci.out.println((new StringBuilder()).append("> Unable to log to file: ").append(filename).append(": ").append(e).toString());
						}
					} else
					{
						if (!(con instanceof ConsoleAppender))
						{
							Logger.getRootLogger().removeAppender(con);
							con = new ConsoleAppender(new PatternLayout("%r [%t] %p %c %x - %m%n"));
							con.setName("ConsoleAppender");
							Logger.getRootLogger().addAppender(con);
						}
						ci.out.println("> Console logging on");
					}
					con.clearFilters();
				} else
				{
					Map channel_map = getChannelMap(ci);
					final String name = (String)args.get(1);
					LoggerChannel channel = (LoggerChannel)channel_map.get(name);
					if (channel == null)
						ci.out.println((new StringBuilder()).append("> Channel '").append(name).append("' not found").toString());
					else
					if (channel_listener_map.get(name) != null)
					{
						ci.out.println((new StringBuilder()).append("> Channel '").append(name).append("' already being logged").toString());
					} else
					{
						LoggerChannelListener l = new LoggerChannelListener() {

							final ConsoleInput val$ci;
							final String val$name;
							final Log this$0;

							public void messageLogged(int type, String content)
							{
								ci.out.println((new StringBuilder()).append("[").append(name).append("] ").append(content).toString());
							}

							public void messageLogged(String str, Throwable error)
							{
								ci.out.println((new StringBuilder()).append("[").append(name).append("] ").append(str).toString());
								error.printStackTrace(ci.out);
							}

			
			{
				this$0 = Log.this;
				ci = consoleinput;
				name = s;
				super();
			}
						};
						channel.addListener(l);
						channel_listener_map.put(name, ((Object) (new Object[] {
							channel, l
						})));
						ci.out.println((new StringBuilder()).append("> Channel '").append(name).append("' on").toString());
					}
				}
			} else
			if (subcommand.equalsIgnoreCase("list"))
			{
				Map channel_map = getChannelMap(ci);
				String name;
				for (Iterator it = channel_map.keySet().iterator(); it.hasNext(); ci.out.println((new StringBuilder()).append("  ").append(name).append(" [").append(channel_listener_map.get(name) != null ? "on" : "off").append("]").toString()))
					name = (String)it.next();

			} else
			{
				ci.out.println((new StringBuilder()).append("> Command 'log': Subcommand '").append(subcommand).append("' unknown.").toString());
			}
		} else
		{
			ci.out.println("> Console logger not found or missing subcommand for 'log'\r\n> log syntax: log [-f filename] (on [name]|off [name]|list)");
		}
	}

	protected Map getChannelMap(ConsoleInput ci)
	{
		Map channel_map = new HashMap();
		PluginInterface pis[] = ci.azureus_core.getPluginManager().getPluginInterfaces();
		for (int i = 0; i < pis.length; i++)
		{
			LoggerChannel logs[] = pis[i].getLogger().getChannels();
			if (logs.length <= 0)
				continue;
			if (logs.length == 1)
			{
				channel_map.put(pis[i].getPluginName(), logs[0]);
				continue;
			}
			for (int j = 0; j < logs.length; j++)
				channel_map.put((new StringBuilder()).append(pis[i].getPluginName()).append(".").append(logs[j].getName()).toString(), logs[j]);

		}

		return channel_map;
	}

	public static void commandLogtest(ConsoleInput ci, List args)
	{
		Logger.getLogger("azureus2").fatal((new StringBuilder()).append("Logging test").append(args != null && !args.isEmpty() ? (new StringBuilder()).append(": ").append(args.get(0).toString()).toString() : "").toString());
	}

	public String getCommandDescriptions()
	{
		return "log [-f filename] (on [name]|off [name]|list)\t\t\tl\tTurn on/off console logging";
	}
}

⌨️ 快捷键说明

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