Merhaba, uygulamamda java günlüğünü uygulamaya çalışıyorum. İki işleyici kullanmak istiyorum. Bir dosya işleyicisi ve kendi konsol işleyicim. Her iki işleyicim de iyi çalışıyor. Günlüğüm bir dosyaya ve konsola gönderilir. Günlüğüm de istemediğim varsayılan konsol işleyicisine gönderiliyor. Kodumu çalıştırırsanız, konsola fazladan iki satırın gönderildiğini göreceksiniz. Varsayılan konsol işleyicisini kullanmak istemiyorum. Varsayılan konsol işleyicisinin nasıl devre dışı bırakılacağını bilen var mı? Yalnızca oluşturduğum iki işleyiciyi kullanmak istiyorum.
Handler fh = new FileHandler("test.txt");
fh.setFormatter(formatter);
logger.addHandler(fh);
Handler ch = new ConsoleHandler();
ch.setFormatter(formatter);
logger.addHandler(ch);
import java.util.Date;
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
public class LoggingExample {
private static Logger logger = Logger.getLogger("test");
static {
try {
logger.setLevel(Level.INFO);
Formatter formatter = new Formatter() {
@Override
public String format(LogRecord arg0) {
StringBuilder b = new StringBuilder();
b.append(new Date());
b.append(" ");
b.append(arg0.getSourceClassName());
b.append(" ");
b.append(arg0.getSourceMethodName());
b.append(" ");
b.append(arg0.getLevel());
b.append(" ");
b.append(arg0.getMessage());
b.append(System.getProperty("line.separator"));
return b.toString();
}
};
Handler fh = new FileHandler("test.txt");
fh.setFormatter(formatter);
logger.addHandler(fh);
Handler ch = new ConsoleHandler();
ch.setFormatter(formatter);
logger.addHandler(ch);
LogManager lm = LogManager.getLogManager();
lm.addLogger(logger);
} catch (Throwable e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
logger.info("why does my test application use the standard console logger ?\n" + " I want only my console handler (Handler ch)\n " + "how can i turn the standard logger to the console off. ??");
}
}
b.append(formatMessage(arg0))
Bunun yerine kullanmayı nazikçe önerebilir miyimb.append(arg0.getMessage())
? İleformatMessage
yöntemle size kullanım ile biçimlendirici uyumlu yapıyoruzpublic void log(Level level, String msg, Object param1)
ve benzeri yöntemlerle.