rendered paste body@Startup
@Singleton
public class LogBean implements LogLocal {
private static org.apache.log4j.Logger logger;
private static final String LOG_DIR = "/var/emeklog";
private static final String LOG_FILENAME = "emek.log";
private static final String LOG_PATTERN = "%d{yyyyMMddHHmmss}\t%5p\t%m%n";
private static final int LOG_IO_BUFFER_SIZE_BYTES = 16384;
private static final String ROLLOVER_PATTERN="'.'yyyyMMddHH";
@Override
@PostConstruct
public void postConstruct() {
logger = org.apache.log4j.Logger.getLogger(LogBean.class);
try {
final File logDir = new File(LOG_DIR);
logDir.mkdirs();
final File logFile = new File(logDir,String.format("%s%s",System.getProperty("file.separator"),LOG_FILENAME));
final org.apache.log4j.PatternLayout pl = new org.apache.log4j.PatternLayout(LOG_PATTERN);
final org.apache.log4j.DailyRollingFileAppender dfp = new org.apache.log4j.DailyRollingFileAppender(pl,logFile.getCanonicalPath(), ROLLOVER_PATTERN);
// we might not want immediate flush
dfp.setImmediateFlush(true);
dfp.setBufferedIO(false);
dfp.setBufferSize(LOG_IO_BUFFER_SIZE_BYTES);
logger.removeAllAppenders();
logger.setLevel(org.apache.log4j.Level.INFO);
logger.addAppender(dfp);
} catch (Exception e) {
e.printStackTrace(System.err);
}
Logger.getLogger(LogBean.class.getName()).log(Level.INFO,"LogBean started.");
}
@Override
@PreDestroy
public void preDestroy() {
Logger.getLogger(LogBean.class.getName()).log(Level.INFO, "LogBean thread destroyed.");
}
private StringBuilder formBuffer(String tag, String ipNum, String sessionId, String userAgent, String referrer, String sessionCookie) {
StringBuilder sb = new StringBuilder(tag);
sb.append("\t");
sb.append(ipNum);
sb.append("\t");
sb.append(sessionId);
sb.append("\t");
sb.append(sessionCookie);
sb.append("\t");
sb.append(userAgent);
sb.append("\t");
sb.append(referrer);
sb.append("\t");
return sb;
}