Reputation: 1635
I have writing standalone java tool. Below is my logger implementation code. I have face one issue in below code. Whenever i called ZRToolLogger.getLogger, a new file has been created. I need to maintain log information in single file. How can resolve this problem ?
I don't know the below implementation is correct or wrong. If wrong, pls let me know for another way to resolve this.
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
public class ZRToolLogger{
public static Logger getInfoLogger(String loggerName)
{
LogManager logManager = LogManager.getLogManager();
Logger logger = Logger.getLogger(loggerName);
logger.setUseParentHandlers(false);
FileHandler fh = null;
try{
fh = new FileHandler(ZRToolConstants.CTX_PATH+"/logs/log.%u.txt", true);
}
catch(IOException e)
{
}
logManager.addLogger(logger);
ZRToolLogFormatter formatterTxt = new ZRToolLogFormatter();
if(fh != null)
{
fh.setFormatter(formatterTxt);
}
logger.addHandler(fh);
return logger;
}
private static class ZRToolLogFormatter extends Formatter
{
public ZRToolLogFormatter()
{
super();
}
@Override
public String format(LogRecord log)
{
return log.getLevel() + ":" + formatMessage(log)+"\n";
}
}
}
Thanks.
Upvotes: 2
Views: 1082
Reputation: 1035
You have to make fh static.
public class ZRToolLogger{
public static FileHandler fh;
public static Logger getInfoLogger(String loggerName)
{
LogManager logManager = LogManager.getLogManager();
Logger logger = Logger.getLogger(loggerName);
logger.setUseParentHandlers(false);
if (ZRToolLogger.fh = null)
{
try{
ZRToolLogger.fh = new FileHandler(ZRToolConstants.CTX_PATH+"/logs/log.%u.txt", true);
}
catch(IOException e)
{
}
}
logManager.addLogger(logger);
ZRToolLogFormatter formatterTxt = new ZRToolLogFormatter();
if(ZRToolLogger.fh != null)
{
ZRToolLogger.fh.setFormatter(formatterTxt);
}
logger.addHandler(fh);
return logger;
}
private static class ZRToolLogFormatter extends Formatter
{
public ZRToolLogFormatter()
{
super();
}
@Override
public String format(LogRecord log)
{
return log.getLevel() + ":" + formatMessage(log)+"\n";
}
}
}
Upvotes: 2