下面列出了怎么用org.apache.log4j.FileAppender的API类实例代码及写法,或者点击链接到github查看源代码。
private static void startLogging(File logFile, boolean debugMode) {
try {
FileAppender logAppender = new FileAppender(new SimpleLayout(), logFile.getCanonicalPath(), false);
Logger.getRootLogger().removeAllAppenders();
Logger.getRootLogger().addAppender(logAppender);
if (debugMode) {
LOGGER.setLevel(Level.DEBUG);
} else {
LOGGER.setLevel(Level.INFO);
}
} catch (IOException e) {
System.err.println("Failed to create logger: " + e.getMessage());
System.exit(1);
}
LOGGER.info(
"\n" + HEADER);
LOGGER.info("Version: " + VERSION);
LOGGER.info("Current date and time: " + DATE_TIME_FORMAT.format(currentDataTime));
LOGGER.info("Log level: " + LOGGER.getLevel());
System.out.println("Started logging");
System.out.println();
}
@SuppressWarnings("unchecked")
public Log4jLoggerAdapter() {
try {
org.apache.log4j.Logger logger = LogManager.getRootLogger();
if (logger != null) {
Enumeration<Appender> appenders = logger.getAllAppenders();
if (appenders != null) {
while (appenders.hasMoreElements()) {
Appender appender = appenders.nextElement();
if (appender instanceof FileAppender) {
FileAppender fileAppender = (FileAppender)appender;
String filename = fileAppender.getFile();
file = new File(filename);
break;
}
}
}
}
} catch (Throwable t) {
}
}
@SuppressWarnings("unchecked")
public Log4jLoggerAdapter() {
try {
org.apache.log4j.Logger logger = LogManager.getRootLogger();
if (logger != null) {
Enumeration<Appender> appenders = logger.getAllAppenders();
if (appenders != null) {
while (appenders.hasMoreElements()) {
Appender appender = appenders.nextElement();
if (appender instanceof FileAppender) {
FileAppender fileAppender = (FileAppender) appender;
String filename = fileAppender.getFile();
file = new File(filename);
break;
}
}
}
}
} catch (Throwable t) {
}
}
public String getDefaultMetricsSinkDir() {
String dirPath = metricsConf.get(DEFAULT_EXTERNAL_SINK_DIR);
if (dirPath == null) {
// Only one logger at the time of writing
Appender appender = (Appender) Logger.getRootLogger().getAllAppenders().nextElement();
if (appender instanceof FileAppender) {
File f = new File(((FileAppender) appender).getFile());
if (f.exists()) {
dirPath = f.getParent();
} else {
dirPath = "/tmp";
}
}
}
return dirPath;
}
private static void setupLoggingToFile(Logger stcLogger, String logfile,
boolean trace) {
Layout layout = new PatternLayout("%-5p %m%n");
boolean append = false;
try {
FileAppender appender = new FileAppender(layout, logfile, append);
Level threshold;
if (trace) {
threshold = Level.TRACE;
} else {
threshold = Level.DEBUG;
}
appender.setThreshold(threshold);
stcLogger.addAppender(appender);
stcLogger.setLevel(threshold);
} catch (IOException e) {
System.out.println(e.getMessage());
System.exit(ExitCode.ERROR_IO.code());
}
}
@SuppressWarnings("rawtypes")
public static Log getLog(Class className) {
Log log = LogFactory.getLog(className);
final Logger logger = Logger.getLogger(className);
try {
logger.addAppender(
new FileAppender(new PatternLayout("%p - %C{1}.%M(%L) |%d{ISO8601}| %m%n"), inizLogFilePath, true));
logger.setLevel((Level) Level.ALL);
}
catch (IOException e) {
log.error("The custom logger could not be setup, defaulting on the usual logging mechanism.", e);
}
return log;
}
@SuppressWarnings("unchecked")
public LogPageHandler() {
try {
org.apache.log4j.Logger logger = LogManager.getRootLogger();
if (logger != null) {
Enumeration<Appender> appenders = logger.getAllAppenders();
if (appenders != null) {
while (appenders.hasMoreElements()) {
Appender appender = appenders.nextElement();
if (appender instanceof FileAppender) {
FileAppender fileAppender = (FileAppender)appender;
String filename = fileAppender.getFile();
file = new File(filename);
break;
}
}
}
}
} catch (Throwable t) {
}
}
@SuppressWarnings("unchecked")
public LogPageHandler() {
try {
org.apache.log4j.Logger logger = LogManager.getRootLogger();
if (logger != null) {
Enumeration<Appender> appenders = logger.getAllAppenders();
if (appenders != null) {
while (appenders.hasMoreElements()) {
Appender appender = appenders.nextElement();
if (appender instanceof FileAppender) {
FileAppender fileAppender = (FileAppender)appender;
String filename = fileAppender.getFile();
file = new File(filename);
break;
}
}
}
}
} catch (Throwable t) {
}
}
@SuppressWarnings("unchecked")
public Log4jLoggerAdapter() {
try {
org.apache.log4j.Logger logger = LogManager.getRootLogger();
if (logger != null) {
Enumeration<Appender> appenders = logger.getAllAppenders();
if (appenders != null) {
while (appenders.hasMoreElements()) {
Appender appender = appenders.nextElement();
if (appender instanceof FileAppender) {
FileAppender fileAppender = (FileAppender)appender;
String filename = fileAppender.getFile();
file = new File(filename);
break;
}
}
}
}
} catch (Throwable t) {
}
}
@SuppressWarnings("unchecked")
private LinkedList<LogProfileInfo> figureoutLogConfiguration(Logger Logger, String appid) {
LinkedList<LogProfileInfo> logProfiles = new LinkedList<LogProfileInfo>();
Enumeration<Appender> appenders = Logger.getAllAppenders();
while (appenders != null && appenders.hasMoreElements()) {
Appender appender = appenders.nextElement();
if (appender instanceof FileAppender) {
logProfiles.add(getAppenderInfo((FileAppender)appender, appid));
}
else if(appender instanceof AsyncAppender) {
Enumeration<Appender> ads = ((AsyncAppender) appender).getAllAppenders();
while(ads != null && ads.hasMoreElements()) {
Appender ap = ads.nextElement();
if(ap instanceof FileAppender) {
logProfiles.add(getAppenderInfo((FileAppender)ap, appid));
}
}
}
}
return logProfiles;
}
@SuppressWarnings("unchecked")
public LogPageHandler() {
try {
org.apache.log4j.Logger logger = LogManager.getRootLogger();
if (logger != null) {
Enumeration<Appender> appenders = logger.getAllAppenders();
if (appenders != null) {
while (appenders.hasMoreElements()) {
Appender appender = appenders.nextElement();
if (appender instanceof FileAppender) {
FileAppender fileAppender = (FileAppender)appender;
String filename = fileAppender.getFile();
file = new File(filename);
break;
}
}
}
}
} catch (Throwable t) {
}
}
@SuppressWarnings("unchecked")
public Log4jLoggerAdapter() {
try {
org.apache.log4j.Logger logger = LogManager.getRootLogger();
if (logger != null) {
Enumeration<Appender> appenders = logger.getAllAppenders();
if (appenders != null) {
while (appenders.hasMoreElements()) {
Appender appender = appenders.nextElement();
if (appender instanceof FileAppender) {
FileAppender fileAppender = (FileAppender)appender;
String filename = fileAppender.getFile();
file = new File(filename);
break;
}
}
}
}
} catch (Throwable t) {
}
}
/**
* Setup the Log4J logger for this action thread.
* @return String path to log file
* @throws IOException If there's something wrong with the FileAppender.
*/
private void setupLog4jForAction() throws IOException {
String loggerName = "Action_" + this.id;
org.apache.log4j.Logger log4jLogger = org.apache.log4j.Logger.getLogger("Action_" + this.id);
String logRoot = System.getProperty("LOG_ROOT");
if(logRoot == null) {
logRoot = ".";
}
String logFilePath = logRoot + "/charles-rest/ActionsLogs/" + this.id + ".log";
File logFile = new File(logFilePath);
logFile.getParentFile().mkdirs();
logFile.createNewFile();//you have to create the file yourself since FileAppender acts funny under linux if the file doesn't already exist.
FileAppender fa = new FileAppender(new PatternLayout("%d %p - %m%n"), logFilePath);
fa.setName(this.id + "_appender");
fa.setThreshold(Level.DEBUG);
log4jLogger.addAppender(fa);
log4jLogger.setLevel(Level.DEBUG);
this.logger = LoggerFactory.getLogger(loggerName);
}
void enableLogging(TaskoRun run) {
PatternLayout pattern = new PatternLayout(DEFAULT_LOGGING_LAYOUT);
try {
getLogger().removeAllAppenders();
FileAppender outLogAppender = new FileAppender(pattern,
run.buildStdOutputLogPath());
outLogAppender.setThreshold(Level.INFO);
getLogger().addAppender(outLogAppender);
FileAppender errLogAppender = new FileAppender(pattern,
run.buildStdErrorLogPath());
errLogAppender.setThreshold(Level.ERROR);
getLogger().addAppender(errLogAppender);
}
catch (IOException e) {
getLogger().warn("Logging to file disabled");
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public Log4jLoggerAdapter(){
try {
org.apache.log4j.Logger logger = LogManager.getRootLogger();
if (logger != null) {
Enumeration<Appender> appenders = logger.getAllAppenders();
if (appenders != null) {
while (appenders.hasMoreElements()) {
Appender appender = appenders.nextElement();
if (appender instanceof FileAppender) {
FileAppender fileAppender = (FileAppender) appender;
String filename = fileAppender.getFile();
file = new File(filename);
break;
}
}
}
}
} catch (Throwable t) {
}
}
public void locationInfo() throws Exception {
XMLLayout xmlLayout = new XMLLayout();
xmlLayout.setLocationInfo(true);
root.addAppender(new FileAppender(xmlLayout, TEMP, false));
common();
Transformer.transform(
TEMP, FILTERED,
new Filter[] {
new LineNumberFilter(),
new XMLTimestampFilter(),
new XMLLineAttributeFilter(),
new JunitTestRunnerFilter(),
new SunReflectFilter()
});
assertTrue(Compare.compare(FILTERED, "witness/xmlLayout.2"));
}
public void testNull() throws Exception {
XMLLayout xmlLayout = new XMLLayout();
root.addAppender(new FileAppender(xmlLayout, TEMP, false));
String oldThreadName = Thread.currentThread().getName();
Thread.currentThread().setName("main");
logger.debug("hi");
logger.debug(null);
Exception e = new Exception((String) null);
logger.debug("hi", e);
Thread.currentThread().setName(oldThreadName);
Transformer.transform(
TEMP, FILTERED,
new Filter[] { new LineNumberFilter(),
new XMLTimestampFilter(),
new JunitTestRunnerFilter(),
new SunReflectFilter()});
assertTrue(Compare.compare(FILTERED, "witness/xmlLayout.null"));
}
public void testMDCEscaped() throws Exception {
XMLLayout xmlLayout = new XMLLayout();
xmlLayout.setProperties(true);
root.addAppender(new FileAppender(xmlLayout, TEMP, false));
Hashtable context = MDC.getContext();
if (context != null) {
context.clear();
}
MDC.put("blahAttribute", "<blah value='blah'>");
MDC.put("<blahKey value='blah'/>", "blahValue");
logger.debug("Hello");
Transformer.transform(
TEMP, FILTERED,
new Filter[] { new LineNumberFilter(),
new JunitTestRunnerFilter(),
new XMLTimestampFilter() });
assertTrue(Compare.compare(FILTERED, "witness/xmlLayout.mdc.2"));
}
/**
* Setup log4j logging
*
* @param logFile log file
* @param debug true if debug messages should be logged (use -Ddebug=true to enable debug message)
*/
public static void setupLogging(File logFile, boolean debug) {
Logger root = Logger.getRootLogger();
ConsoleAppender console = new ConsoleAppender(new PatternLayout("[%t] %m%n"));
console.setThreshold(Level.INFO);
root.addAppender(console);
if (logFile != null) {
try {
FileAppender file = new FileAppender(new PatternLayout("%d{dd-MMM-yy HH:mm:ss.SSS} [%t] %-5p %c{2}> %m%n"), logFile.getPath(), false);
file.setThreshold(Level.DEBUG);
root.addAppender(file);
} catch (IOException e) {
sLogger.fatal("Unable to configure logging, reason: " + e.getMessage(), e);
}
}
if (!debug)
root.setLevel(Level.INFO);
}
@Before
public void setUp() throws Exception{
pigServer = new PigServer(ExecType.MAPREDUCE, cluster.getProperties());
pigServer.getPigContext().getExecutionEngine().setProperty(PigConfiguration.PIG_OPT_FETCH, "false");
pigServer.getPigContext().getExecutionEngine().setProperty(PigConfiguration.PIG_AUTO_LOCAL_ENABLED, String.valueOf("true"));
pigServer.getPigContext().getExecutionEngine().setProperty(PigConfiguration.PIG_AUTO_LOCAL_INPUT_MAXBYTES, "200");
Logger logger = Logger.getLogger(JobControlCompiler.class);
logger.removeAllAppenders();
logger.setLevel(Level.INFO);
SimpleLayout layout = new SimpleLayout();
logFile = File.createTempFile("log", "");
FileAppender appender = new FileAppender(layout, logFile.toString(), false, false, 0);
logger.addAppender(appender);
miniFileName = createInputFile("miniFile", 10).getAbsolutePath();
smallFileName = createInputFile("smallFile", 100).getAbsolutePath();
bigFileName = createInputFile("bigFile", 1000).getAbsolutePath();
}
/**
* Setup log4j logging
*
* @param logFile log file
*/
public static void setupLogging(File logFile) {
Logger root = Logger.getRootLogger();
ConsoleAppender console = new ConsoleAppender(new PatternLayout("[%t] %m%n"));
console.setThreshold(Level.INFO);
root.addAppender(console);
if (logFile != null) {
try {
FileAppender file = new FileAppender(new PatternLayout("%d{dd-MMM-yy HH:mm:ss.SSS} [%t] %-5p %c{2}> %m%n"), logFile.getPath(), false);
file.setThreshold(Level.DEBUG);
root.addAppender(file);
} catch (IOException e) {
sLog.fatal("Unable to configure logging, reason: " + e.getMessage(), e);
}
}
}
/**
* Log4j configuration tweaking
* This method will modify the file name of every FileAppender
* by adding the hostname of the machine onto which it executes.
* Because it cannot be done from the log4j-configuration file
* we hard-code this configuration issue
* @param logger2
*/
private void rebaseLogFiles() {
Enumeration<Logger> curLoggers = LogManager.getCurrentLoggers();
while (curLoggers.hasMoreElements()) {
Logger someLogger = curLoggers.nextElement();
Enumeration<Appender> appenders = someLogger.getAllAppenders();
while (appenders.hasMoreElements()) {
Appender app = appenders.nextElement();
if (app instanceof FileAppender) {
FileAppender fileApp = (FileAppender) app;
System.out.println("File appender, output file " + fileApp.getFile());
addHostToFilename(fileApp);
}
}
}
}
private void addHostToFilename(FileAppender fileApp) {
String hostID = Math.abs(UniqueID.getCurrentVMID().hashCode() % 100000) + "-" +
ProActiveInet.getInstance().getHostname();
String fileName = fileApp.getFile();
File filePath = new File(fileName);
String hostFileName;
String name = filePath.getName();
String pathToFile = filePath.getParent();
int point = name.indexOf('.');
if (point == -1) {
hostFileName = fileName + "-" + hostID;
} else {
String extension = name.substring(point + 1);
String nameNoExtension = name.substring(0, point);
hostFileName = (pathToFile != null ? pathToFile : "") + File.separator + nameNoExtension + "-" + hostID +
"." + extension;
}
System.out.println("New output file:" + hostFileName);
fileApp.setFile(hostFileName);
fileApp.activateOptions();
}
public File createFileAppender(File pathToFolder) throws IOException {
if (taskLogAppender.getAppender(FILE_APPENDER_NAME) != null) {
throw new IllegalStateException("Only one file appender can be created");
}
File logFile = new File(pathToFolder, new TaskLoggerRelativePathGenerator(taskId).getRelativePath());
boolean append = true;
if (!logFile.exists()) {
append = false;
logFile.getParentFile().mkdirs();
FileUtils.touch(logFile);
}
logFile.setWritable(true, false);
FileAppender fap = new FileAppender(Log4JTaskLogs.getTaskLogLayout(), logFile.getAbsolutePath(), append);
fap.setName(FILE_APPENDER_NAME);
taskLogAppender.addAppender(fap);
return logFile;
}
public SystemLogPage() {
super();
WebMarkupContainer cssContainer = new WebMarkupContainer("cssPath");
cssContainer.add(new AttributeModifier("href", ThemesManager.getInstance().getThemeRelativePathCss()));
add(cssContainer);
FileAppender appender = (FileAppender) LogManager.getRootLogger().getAppender("FILE");
File logFile = new File(appender.getFile());
String content;
try {
content = FileUtils.readFileToString(logFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
content = e.toString();
}
add(new Label("size", FileUtils.byteCountToDisplaySize(logFile.length())));
add(new Label("lastModified", new Date(logFile.lastModified()).toString()));
add(new MultiLineLabel("log", content));
}
@SuppressWarnings("unchecked")
public Log4jLoggerAdapter(){
try {
org.apache.log4j.Logger logger = LogManager.getRootLogger();
if (logger != null) {
Enumeration<Appender> appenders = logger.getAllAppenders();
if (appenders != null) {
while (appenders.hasMoreElements()) {
Appender appender = appenders.nextElement();
if (appender instanceof FileAppender) {
FileAppender fileAppender = (FileAppender) appender;
String filename = fileAppender.getFile();
file = new File(filename);
break;
}
}
}
}
} catch (Throwable t) {
}
}
private static void startLogging(File logFile, boolean debugMode) {
try {
FileAppender logAppender = new FileAppender(new SimpleLayout(), logFile.getCanonicalPath(), false);
Logger.getRootLogger().removeAllAppenders();
Logger.getRootLogger().addAppender(logAppender);
if (debugMode) {
LOGGER.setLevel(Level.DEBUG);
} else {
LOGGER.setLevel(Level.INFO);
}
} catch (IOException e) {
System.err.println("Failed to create logger: " + e.getMessage());
System.exit(1);
}
LOGGER.info(
"\n" + HEADER);
LOGGER.info("Version: " + VERSION);
LOGGER.info("Current date and time: " + DATE_TIME_FORMAT.format(currentDataTime));
LOGGER.info("Log level: " + LOGGER.getLevel());
System.out.println("Started logging");
System.out.println();
}
private static void initializeLogger() throws IOException
{
String logConfigFileName = ApplicationArguments.getInstance().getLoggingConfigFileName();
if (logConfigFileName != null) {
PropertyConfigurator.configure(logConfigFileName);
} else {
ApplicationFiles appFiles = new ApplicationFiles();
String logMessagePattern = "%-4r [%t] %-5p %c %x - %m%n";
Layout layout = new PatternLayout(logMessagePattern);
File logsDir = new File(appFiles.getUserSettingsDirectory(), "logs");
File updateLogFile = new File(logsDir, "updater.log");
FileAppender appender = new FileAppender(layout, updateLogFile.getAbsolutePath());
LoggerController.registerLoggerFactory(new SquirrelLoggerFactory(appender, false));
}
}
@SuppressWarnings("unchecked")
public Log4jLoggerAdapter() {
try {
org.apache.log4j.Logger logger = LogManager.getRootLogger();
if (logger != null) {
Enumeration<Appender> appenders = logger.getAllAppenders();
if (appenders != null) {
while (appenders.hasMoreElements()) {
Appender appender = appenders.nextElement();
if (appender instanceof FileAppender) {
FileAppender fileAppender = (FileAppender)appender;
String filename = fileAppender.getFile();
file = new File(filename);
break;
}
}
}
}
} catch (Throwable t) {
}
}
private Set<File> extractAppenderFiles(org.apache.log4j.Logger logger) {
Set<File> result = new HashSet<File>();
Enumeration<Appender> e = logger.getAllAppenders();
while ( e.hasMoreElements() ) {
Appender app = e.nextElement();
if (app instanceof FileAppender ) {
FileAppender fileApp = (FileAppender) app;
String filePath = fileApp.getFile();
if ( filePath==null ) {
m_logger.warn("Logger {} has file appender {} with no file", logger.getName(), app.getName());
} else {
result.add(new File(filePath));
}
}
}
return result;
}