Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java log4j将日志写入文件_Java_Log4j - Fatal编程技术网

Java log4j将日志写入文件

Java log4j将日志写入文件,java,log4j,Java,Log4j,我正在使用log4j将日志写入文件,它工作得非常好。然而,我这里没有什么问题 应用程序只接受几个参数,我正在验证这些参数的正确性。 基于这些参数,我正在构建日志文件名,只有当所有参数都正确时,日志记录才会开始。但是如果参数是错误的,日志记录永远不会发生,因为日志文件没有创建。 那么,如何克服这个问题并从main()之后的第一行开始记录日志呢 我同意詹斯的意见。但是,如果您确实希望使用用户输入作为日志文件名,并记录第一行,那么您可以做的是,在执行程序时,不将其作为程序参数传递,而将其作为JVM参数

我正在使用log4j将日志写入文件,它工作得非常好。然而,我这里没有什么问题

应用程序只接受几个参数,我正在验证这些参数的正确性。 基于这些参数,我正在构建日志文件名,只有当所有参数都正确时,日志记录才会开始。但是如果参数是错误的,日志记录永远不会发生,因为日志文件没有创建。 那么,如何克服这个问题并从main()之后的第一行开始记录日志呢


我同意詹斯的意见。但是,如果您确实希望使用用户输入作为日志文件名,并记录第一行,那么您可以做的是,在执行程序时,不将其作为程序参数传递,而将其作为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