настройка log4j для входа в пользовательский файл во время выполнения
может ли кто-нибудь указать мне, как я могу настроить log4j для входа в определенный файл, который я указываю во время выполнения.Имя и путь к файлу журнала создаются во время выполнения, и приложение должно войти в этот конкретный файл.
обычно записи приложения файла в файле log4j. properties указывают на файл журнала, который будет использоваться приложением.Однако в этом случае я хотел бы прочитать путь к файлу журнала из командной строки и войти в этот конкретный файл.
Как я могу этого достичь ?
4 ответа:
адаптировано из документации 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"); } }
вы также можете сделать это из файла 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{yyyyMMdd@HH\:mm\:ss,SSS}\:%c - %m%n
имя файла журнала можно задать двумя различными способами:
- в командной строке системное свойство передается java "-Dlogfile.name={logfile}"
в программе java непосредственно путем установки системного свойства (прежде чем делать какие-либо вызовы log4j).
System. setProperty("logfile.name", "некоторая строка имени пути / файла журнала");
также может быть сделано с помощью этого свойства, определенного в файле 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