Изменения уровня журнала (log4j & Java) во время выполнения не учитываются классами внутри jar поставщика - PullRequest
0 голосов
/ 11 октября 2018

Я создал сервлет для изменения уровня журнала во время выполнения, и ниже приведен фрагмент кода, который выполняет повторную инициализацию.

            String propertyFile = request.getParameter("log4jproperties");
            Properties log4jProperties = new Properties();
            log4jProperties.load(new StringReader(propertyFile));
            LogManager.resetConfiguration();                
            PropertyConfigurator.configure(log4jProperties);
            logger.info("Hello at info");
            logger.error("Hello at error");
            System.out.println("Configured Succesfully ");

Я установил флаг отладки в true.

      -Dlog4j.debug

Когда я изменяю уровень журнала, я вижу, что повторная инициализация log4j выполняется с новыми свойствами, которые я передал всервлет.Я также вижу, что сообщения журнала "Hello" в сервлете, соответствующие уровню журнала, передаются в свойствах.

    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4jProperties.size()18
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: Parsing for [root] with value=[ERROR,Portal,console].
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: Level token is [ERROR].
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: Category root set to ERROR
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: Parsing appender named "Portal".
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: Parsing layout options for "Portal".
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: Setting property [conversionPattern] to [[%d{MM/dd/yy HH:mm:ss.SSS }] %t [%p]%m%n].
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: End of parsing for "Portal".
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: Setting property [maxFileSize] to [100MB].
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: Setting property [maxBackupIndex] to [20].
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: Setting property [file] to [/applogs/MemberPortal/MemberPortal.log].
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: setFile called: /applogs/MemberPortal/MemberPortal.log, true
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: setFile ended
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: Parsed "Portal" options.
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: Parsing appender named "console".
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: Parsing layout options for "console".
    [10/11/18 15:14:14:487 EDT] 000001ab SystemOut     O log4j: Setting property [conversionPattern] to [[%d{MM/dd/yy HH:mm:ss.SSS }] %t %c %r [%p]%m%n].
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: End of parsing for "console".
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Parsed "console" options.
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Parsing for [com.BCBSTN.OpenToken] with value=[ERROR,OpenToken,console].
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Level token is [ERROR].
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Category com.BCBSTN.OpenToken set to ERROR
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Parsing appender named "OpenToken".
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Parsing layout options for "OpenToken".
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Setting property [conversionPattern] to [[%d{MM/dd/yy HH:mm:ss.SSS }] %t [%p]%m%n].
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: End of parsing for "OpenToken".
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Setting property [maxFileSize] to [100MB].
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Setting property [file] to [/applogs/OpenToken/OpenToken.log].
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Setting property [maxBackupIndex] to [20].
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: setFile called: /applogs/OpenToken/OpenToken.log, true
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: setFile ended
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Parsed "OpenToken" options.
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Parsing appender named "console".
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Appender "console" was already parsed.
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Handling log4j.additivity.com.BCBSTN.OpenToken=[false]
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Setting additivity for "com.BCBSTN.OpenToken" to false
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O log4j: Finished configuring.
    [10/11/18 15:14:14:488 EDT] 000001ab SystemOut     O [10/11/18 15:14:14.488 ] WebContainer : 2 com.bcbst.mp.updateotherinsurance.controller.ResetLog4jSettings 500736 [ERROR]Hello at error
    [10/11/18 15:14:14:489 EDT] 000001ab SystemOut     O Configured Succesfully

Вот файл журнала, который я передал сервлету в качестве параметра.

    # Console Configuration
    log4j.appender.console=org.apache.log4j.ConsoleAppender
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=[%d{MM/dd/yy HH:mm:ss.SSS }] %t %c %r [%p]%m%n


    #Member Portal Rolling File Configuration
    log4j.appender.Portal=org.apache.log4j.RollingFileAppender
    log4j.appender.Portal.File=/applogs/MemberPortal/MemberPortal.log
    log4j.appender.Portal.MaxFileSize=100MB
    log4j.appender.Portal.MaxBackupIndex=20
    log4j.appender.Portal.layout=org.apache.log4j.PatternLayout
    log4j.appender.Portal.layout.ConversionPattern = [%d{MM/dd/yy HH:mm:ss.SSS }] %t [%p]%m%n

    #Open Token Rolling File Configuration
    log4j.appender.OpenToken=org.apache.log4j.RollingFileAppender
    log4j.appender.OpenToken.File=/applogs/OpenToken/OpenToken.log
    log4j.appender.OpenToken.MaxFileSize=100MB
    log4j.appender.OpenToken.MaxBackupIndex=20
    log4j.appender.OpenToken.layout=org.apache.log4j.PatternLayout
    log4j.appender.OpenToken.layout.ConversionPattern = [%d{MM/dd/yy HH:mm:ss.SSS }] %t [%p]%m%n


    # Root Configuration - All packages
    # Always keep this configuration
    log4j.rootLogger=DEBUG,Portal,console

    #  OPEN TOKEN is a shared jar , needs restart of JVM to effect changes in log configuration  #
    log4j.logger.com.BCBSTN.OpenToken=DEBUG,OpenToken,console
    log4j.additivity.com.BCBSTN.OpenToken=false

Журналы в банке поставщика находятся на уровне DEBUG.Что я не понимаю, так это то, почему изменения уровня журнала не выбираются банкой динамически.

Мне нужно изменить файл "customlogFile" и перезапустить сервер, чтобы изменения вступили в силу.

      -Dlog4j.configuration=file:/customlogFile.properties

Сервлет объединен в войну, а вендор jar и log4j развернуты на сервере.(поэтому я считаю, что загрузчик классов, который загружает классы в jar и сервлете, может отличаться).

Может кто-нибудь помочь мне выяснить, почему изменения уровня журнала не учитываются регистратором в банке.Что мне не хватает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...