📄 log.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 + -