Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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 Log4j2编程配置未滚动文件_Java_Logging_Log4j2 - Fatal编程技术网

Java Log4j2编程配置未滚动文件

Java Log4j2编程配置未滚动文件,java,logging,log4j2,Java,Logging,Log4j2,我正在编写一个程序,以编程方式创建log4j2配置。我在log4j2.xml文件中有一个默认配置。基于列表中的某些数据类型,我必须为每种类型创建/复制log4j配置。该配置用于DailRolling appender,该appender针对这些类型进行复制。将创建记录器配置,并根据数据类型将日志消息写入不同的文件。但每天的滚动并没有发生 有人能帮我解释一下为什么没有对这些类型进行滚动吗 这是我的log4j2xml文件 <?xml version="1.0" encoding="UT

我正在编写一个程序,以编程方式创建log4j2配置。我在log4j2.xml文件中有一个默认配置。基于列表中的某些数据类型,我必须为每种类型创建/复制log4j配置。该配置用于DailRolling appender,该appender针对这些类型进行复制。将创建记录器配置,并根据数据类型将日志消息写入不同的文件。但每天的滚动并没有发生

有人能帮我解释一下为什么没有对这些类型进行滚动吗

这是我的log4j2xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="DEBUG" packages="com.ericsson.tests">
        <Properties>
            <Property name="log-path">C:\Users\ekhaavi\Documents\ClaprProject\logtest\
            </Property>
        </Properties>
        <Appenders>
            <RollingFile name="RollingFile" fileName="${log-path}/ipAddr.log"
                filePattern="${log-path}/ipAddr-%d{MM-dd-yyyy}.log">
                <PatternLayout>
                    <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n</pattern>
                </PatternLayout>
                <Policies>
                    <!-- <SizeBasedTriggeringPolicy size="1 KB" /> -->
                    <TimeBasedTriggeringPolicy />
                </Policies>
                <DefaultRolloverStrategy max="4" />
            </RollingFile>

            <RollingFile name="DailyRolling"
                fileName="${log-path}/ipaddress/myexample.type.log" filePattern="${log-path}/ipaddress/myexample.type-%d{yyyy-MM-dd}.log">
                <PatternLayout>
                    <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n</pattern>
                </PatternLayout>
                <Policies>
                    <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                    <SizeBasedTriggeringPolicy size="1 KB" />
                </Policies>

            </RollingFile>
        </Appenders>
        <Loggers>
            <Logger name="root" level="debug" additivity="false">
                <appender-ref ref="RollingFile" level="debug" />
            </Logger>
            <logger name="com.log.ipaddr.type" additivity="false">
                <appender-ref ref="DailyRolling" level="info" />
            </logger>
            <Root level="debug" additivity="false">
                <AppenderRef ref="RollingFile" />
            </Root>
        </Loggers>
    </Configuration> 

C:\Users\ekhavi\Documents\ClaprProject\logtest\
%d{dd/MMM/yyyy HH:mm:ss,SSS}-%c{1}:%m%n
%d{dd/MMM/yyyy HH:mm:ss,SSS}-%c{1}:%m%n
下面是基于数据类型生成log4j配置的代码。如果我需要更改为基于尺寸的轧制,也请帮助我

    package com.ericsson.tests;

    import java.util.ArrayList;
    import java.util.List;

    import org.apache.logging.log4j.Level;
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    import org.apache.logging.log4j.core.Appender;
    import org.apache.logging.log4j.core.LoggerContext;
    import org.apache.logging.log4j.core.appender.FileAppender;
    import org.apache.logging.log4j.core.appender.RollingFileAppender;
    import org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy;
    import org.apache.logging.log4j.core.appender.rolling.TimeBasedTriggeringPolicy;
    import org.apache.logging.log4j.core.appender.rolling.TriggeringPolicy;
    import org.apache.logging.log4j.core.config.AppenderRef;
    import org.apache.logging.log4j.core.config.Configuration;
    import org.apache.logging.log4j.core.config.LoggerConfig;

    public class Log4j2Running {

        static Logger LOGGER;

        public static void main(String[] args) {
            System.setProperty("log4j.configurationFactory","com.ericsson.tests.MyXMLConfigurationFactory");
            LOGGER = LogManager.getLogger(Log4j2Running.class);
            LOGGER.debug("Debug Message Logged !!!");
            LOGGER.info("Info Message Logged !!!");
            LOGGER.error("Error Message Logged !!!", new NullPointerException("NullError"));



            /**CHANGES TO LOGGER TO DYNAMICALLY GENERATE THE FILES  --**/


            final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
            final Configuration config = ctx.getConfiguration();
            Appender app = config.getAppender("DailyRolling");
            LoggerConfig lgcf = config.getLoggerConfig("com.log.ipaddr.type");

            app.stop();
            config.removeLogger("com.log.ipaddr.type");
            List<String> typeList = new ArrayList<String>();
            typeList.add("Data1");
            typeList.add("Data2");
            typeList.add("Data3");
            typeList.add("Data4");
            if (app instanceof RollingFileAppender) {
                for(String str : typeList){
                RollingFileAppender rp =    ((RollingFileAppender) app);

                String fileName = rp.getFileName().replace("type", str);
                fileName = fileName.replace("ipaddress", "10.5.256.12");
                String filePattern = rp.getFilePattern().replace("type", str);
                filePattern = filePattern.replace("ipaddress", "10.5.256.12");
                String name = "10.5.256.12"+"."+str;
                /*RollingFileAppender appender = RollingFileAppender.createAppender(rp.getFileName().replace("type", str),
                        "false", "false", str, "true", "false", "false", "4000", rp.getLayout(), null, "false", null, config);*/
                TimeBasedTriggeringPolicy policy = TimeBasedTriggeringPolicy.createPolicy("1", "true");
                 DefaultRolloverStrategy strategy = DefaultRolloverStrategy.createStrategy("10", "0", null,null,null, true, config);
                RollingFileAppender appender =RollingFileAppender.createAppender(fileName, filePattern, "true", name, "false", null, "true",rp.getTriggeringPolicy(),
                        strategy, rp.getLayout(), null, null, null, null, config);
                appender.start();
                config.addAppender(appender);
                AppenderRef ref = AppenderRef.createAppenderRef(appender.getName(), null, null);
                AppenderRef[] refs = new AppenderRef[] { ref };
                System.out.println(" the level is "+ lgcf.getLevel());
                String loggerName = lgcf.getName().replace("type", str);
                loggerName = loggerName.replace("ipaddr", "10.24.286.19");
                LoggerConfig loggerConfig = LoggerConfig.createLogger("false", lgcf.getLevel(), loggerName,
                        "true", refs, null, config, null);
                loggerConfig.addAppender(appender, null, null);
                config.addLogger(loggerName, loggerConfig);
                ctx.updateLoggers();


                }



            }

            /**END OF THE CHANGES **/


            Logger log = LogManager.getLogger("com.log."+"10.24.286.19"+"."+"Data1");
            log.info("Demo1--SHDGSGDHGSHGDSG");

            Logger log2 = LogManager.getLogger("com.log."+"10.24.286.19"+"."+"Data2");
            log2.info("Demo1--SHDGSGDHGSHGDSG");

            Logger log3 = LogManager.getLogger("com.log."+"10.24.286.19"+"."+"Data3");
            log3.info("Demo1--SHDGSGDHGSHGDSG");

            Logger log4 = LogManager.getLogger("com.log."+"10.24.286.19"+"."+"Data4");
            log4.info("Demo1--SHDGSGDHGSHGDSG");


        }

    }
package com.ericsson.tests;
导入java.util.ArrayList;
导入java.util.List;
导入org.apache.logging.log4j.Level;
导入org.apache.logging.log4j.LogManager;
导入org.apache.logging.log4j.Logger;
导入org.apache.logging.log4j.core.Appender;
导入org.apache.logging.log4j.core.LoggerContext;
导入org.apache.logging.log4j.core.appender.FileAppender;
导入org.apache.logging.log4j.core.appender.RollingFileAppender;
导入org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy;
导入org.apache.logging.log4j.core.appender.rolling.TimeBasedTriggeringPolicy;
导入org.apache.logging.log4j.core.appender.rolling.TriggeringPolicy;
导入org.apache.logging.log4j.core.config.AppenderRef;
导入org.apache.logging.log4j.core.config.Configuration;
导入org.apache.logging.log4j.core.config.LoggerConfig;
公共类log4j2正在运行{
静态记录器;
公共静态void main(字符串[]args){
System.setProperty(“log4j.configurationFactory”、“com.ericsson.tests.MyXMLConfigurationFactory”);
LOGGER=LogManager.getLogger(Log4j2Running.class);
debug(“debug Message Logged!!!”;
LOGGER.info(“记录信息!!!”;
LOGGER.error(“记录错误消息!!!”,新的NullPointerException(“NullError”);
/**更改记录器以动态生成文件--**/
final LoggerContext ctx=(LoggerContext)LogManager.getContext(false);
最终配置config=ctx.getConfiguration();
Appender app=config.getAppender(“dailrolling”);
LoggerConfig lgcf=config.getLoggerConfig(“com.log.ipaddr.type”);
app.stop();
config.removeLogger(“com.log.ipaddr.type”);
列表类型列表=新的ArrayList();
类型列表。添加(“数据1”);
类型列表。添加(“数据2”);
类型列表。添加(“数据3”);
类型列表。添加(“数据4”);
if(应用程序实例RollingFileAppender){
for(字符串str:typeList){
RollingFileAppender rp=((RollingFileAppender)应用程序);
字符串fileName=rp.getFileName().replace(“type”,str);
fileName=fileName.replace(“ipaddress”,“10.5.256.12”);
字符串filePattern=rp.getFilePattern().replace(“type”,str);
filePattern=filePattern.replace(“ipaddress”,“10.5.256.12”);
String name=“10.5.256.12”+”+str;
/*RollingFileAppender appender=RollingFileAppender.createAppender(rp.getFileName().replace(“type”,str),
“false”、“false”、str、“true”、“false”、“false”、“4000”、rp.getLayout()、null、“false”、null、config)*/
TimeBasedTriggeringPolicy policy=TimeBasedTriggeringPolicy.createPolicy(“1”,“true”);
DefaultRolloverStrategy strategy=DefaultRolloverStrategy.createStrategy(“10”,“0”,null,null,null,true,config);
RollingFileAppender appender=RollingFileAppender.createAppender(文件名,filePattern,“true”,name,“false”,null,“true”,rp.getTriggeringPolicy(),
策略,rp.getLayout(),null,null,null,null,config);
appender.start();
config.addAppender(appender);
AppenderRef=AppenderRef.createAppenderRef(appender.getName(),null,null);
AppenderRef[]refs=新的AppenderRef[]{ref};
System.out.println(“级别为”+lgcf.getLevel());
字符串loggerName=lgcf.getName().replace(“type”,str);
loggerName=loggerName.replace(“ipaddr”,“10.24.286.19”);
LoggerConfig LoggerConfig=LoggerConfig.createLogger(“false”,lgcf.getLevel(),loggerName,
“真”,参考,空,配置,空);
loggerConfig.addAppender(appender,null,null);
config.addLogger(loggerName,loggerConfig);
ctx.updateLogger();
}
}
/**改变的结束**/
Logger log=LogManager.getLogger(“com.log.+”10.24.286.19“+”+”Data1”);
log.info(“Demo1--SHDGSGDHGSHGDSG”);
Logger log2=LogManager.getLogger(“com.log.+”10.24.286.19“+”+”数据2”);
log2.info(“Demo1——SHDGSGDHGSHGDSG”);
Logger log3=LogManager.getLogger(“com.log.+”10.24.286.19“+”+”数据3”);
log3.info(“演示