Java log4j将日志写入文件
我正在使用log4j将日志写入文件,它工作得非常好。然而,我这里没有什么问题 应用程序只接受几个参数,我正在验证这些参数的正确性。 基于这些参数,我正在构建日志文件名,只有当所有参数都正确时,日志记录才会开始。但是如果参数是错误的,日志记录永远不会发生,因为日志文件没有创建。 那么,如何克服这个问题并从main()之后的第一行开始记录日志呢Java log4j将日志写入文件,java,log4j,Java,Log4j,我正在使用log4j将日志写入文件,它工作得非常好。然而,我这里没有什么问题 应用程序只接受几个参数,我正在验证这些参数的正确性。 基于这些参数,我正在构建日志文件名,只有当所有参数都正确时,日志记录才会开始。但是如果参数是错误的,日志记录永远不会发生,因为日志文件没有创建。 那么,如何克服这个问题并从main()之后的第一行开始记录日志呢 我同意詹斯的意见。但是,如果您确实希望使用用户输入作为日志文件名,并记录第一行,那么您可以做的是,在执行程序时,不将其作为程序参数传递,而将其作为JVM参数
我同意詹斯的意见。但是,如果您确实希望使用用户输入作为日志文件名,并记录第一行,那么您可以做的是,在执行程序时,不将其作为程序参数传递,而将其作为JVM参数传递 -Dlogfile=my-log-file.log
如果您不想使用JVM参数,那么您就不走运了 请编辑您的帖子以添加a、a或至少向我们展示您迄今为止的尝试。@yur用示例更新了问题您可以显示您的日志配置吗?如果以后指定了文件名,则应在何处写入第一个日志语句?是否有任何帮助?@Jens,添加了日志配置如何传递-Dlogfile以spark提交?
--驱动程序java选项-Dlogfilename=my log file.log
class Test{
private static final Logger logger = LogManager.getLogger(Test.class);
public static void main(String[] args){
if (args.length < 5) {
logger.error("Invalid arguments passed to program...."); //Not written to log file
System.exit(1);
}
String id = args[0];
String name = args[1].toLowerCase();
String date = args[2];
String batch = args[3];
String file = args[4];
String logfile = id + "_" + name + "_" + date + "_" + batch;
System.setProperty("logfile", logfile);
ConfigParser conf = new ConfigParser(propFile);
String log = conf.getSetting("log4jConfPath");
PropertyConfigurator.configure(log);
//logs written to file from this point
#log file
log4j.rootLogger=INFO , file
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %-4r [%t] %-5p %c %x #%L - %m%n
log4j.appender.file.File=${logfile}.log