Настроить log4j для входа в пользовательский файл во время выполнения
Может ли кто-нибудь указать мне, как я могу настроить log4j для входа в определенный файл, который я указываю во время выполнения. Имя и путь файла журнала генерируются во время выполнения, и приложение должно регистрироваться на этом конкретный файл.
Обычно записи файлов в файле log4j.properties указывают на файл журнала, который будет использоваться приложением. Однако в этом случае я хотел бы прочитать путь к файлу журнала из командной строки и войти в этот конкретный файл.
Как я могу это достичь?
Ответы
Ответ 1
Адаптировано из документации log4j:
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.SimpleLayout;
import org.apache.log4j.FileAppender;
public class SimpandFile {
static Logger logger = Logger.getLogger(SimpandFile.class);
public static void main(String args[]) {
// setting up a FileAppender dynamically...
SimpleLayout layout = new SimpleLayout();
FileAppender appender = new FileAppender(layout,"your filename",false);
logger.addAppender(appender);
logger.setLevel((Level) Level.DEBUG);
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}
Ответ 2
Вы также можете сделать это из файла log4j.properties. Используя пример файла ниже, я добавил системное свойство ${logfile.name}:
# logfile is set to be a RollingFileAppender
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${logfile.name}
log4j.appender.logfile.MaxFileSize=10MB
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=[%-5p]%d{[email protected]\:mm\:ss,SSS}\:%c - %m%n
Имя файла журнала можно установить двумя разными способами:
- В качестве командной строки системное свойство передается в java "-Dlogfile.name = {logfile}"
-
В java-программе непосредственно установкой системного свойства (ПЕРЕД вызовом log4j).
System.setProperty( "logfile.name", "строка имени пути/файла журнала" );
Ответ 3
Может также быть сделано с помощью этих свойств в файле log4j.properties
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.maxFileSize=5000KB
log4j.appender.logfile.maxBackupIndex=5
log4j.appender.logfile.File=/WebSphere/AppServer/profiles/Custom01/error.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p [%t] %C %M %c{1}:%L - %m%n
Ответ 4
Работала и была протестирована
// setting up a FileAppender dynamically...
SimpleLayout layout = new SimpleLayout();
RollingFileAppender appender = new RollingFileAppender(layout,"file-name_with_location",true);
appender.setMaxFileSize("20MB");
logger.addAppender(appender);