Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

According to the documentation, the log4j configuration file cannot be used correctly #162

Open
NikulovE opened this issue May 15, 2024 · 0 comments

Comments

@NikulovE
Copy link

Describe the bug
https://github.com/conductor-oss/conductor/blob/main/docs/documentation/metrics/server.md
By reading this document, I only know that I need to add environment variables such as:
LOG4J_PROP=log4j.properties
However, I don’t know what to do next to use this environment variable to make the log take effect.
New conductor oss was switched to log4j2 with XML files
Details
Conductor version: 3.19.0

To Reproduce
Steps to reproduce the behavior:
set env LOG4J_PROP=log4j.properties

Expected behavior
Split logs to conductor.log, server.log metrics.log

Additional context
outdated file https://github.com/conductor-oss/conductor/blob/main/docker/server/config/log4j.properties
outdated file https://github.com/conductor-oss/conductor/blob/main/docker/server/config/log4j-file-appender.properties

proposed log4j2-file-appender.xml:

<Configuration status="WARN">
    <Appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{ISO8601} %5p [%t] (%C) - %m%n"/>
        </Console>
        <RollingFile name="FILE" fileName="/app/logs/conductor.log" filePattern="/app/logs/conductor-%d{MM-dd-yyyy}.log.gz">
            <PatternLayout>
                <pattern>%d{ISO8601} %5p [%t] (%C) - %m%n</pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingFile>
        <RollingFile name="FILEMETRICS" fileName="/app/logs/metrics.log" filePattern="/app/logs/metrics-%d{MM-dd-yyyy}.log.gz">
            <PatternLayout>
                <pattern>%d{ISO8601} %5p [%t] (%C) - %m%n</pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="CONSOLE" />
            <AppenderRef ref="FILE" />
        </Root>
        <Logger name="ConductorMetrics" level="INFO" additivity="false">
            <AppenderRef ref="CONSOLE" />
            <AppenderRef ref="FILEMETRICS" />
        </Logger>
    </Loggers>
</Configuration>

proposed startup.sh:

`#!/bin/sh
#
#  Copyright 2021 Netflix, Inc.
#  <p>
#  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
#  the License. You may obtain a copy of the License at
#  <p>
#  http://www.apache.org/licenses/LICENSE-2.0
#  <p>
#  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
#  an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
#  specific language governing permissions and limitations under the License.
#

# startup.sh - startup script for the server docker image

echo "Starting Conductor server"

# Start the server
cd /app/libs

echo "Property file: $CONFIG_PROP"
echo $CONFIG_PROP
export config_file=

if [ -z "$CONFIG_PROP" ];
  then
    echo "Using default configuration file";
    export config_file=/app/config/config.properties
  else
    echo "Using '$CONFIG_PROP'";
    export config_file=/app/config/$CONFIG_PROP
fi

echo "Log4j property file: $LOG4J_PROP"
echo $LOG4J_PROP
export log4j_config_file=

if [ -z "$LOG4J_PROP" ];
  then
    export log4j_config_file=/app/config/log4j2.xml
    echo "Using default: '$log4j_config_file'";
  else
    echo "Using '$LOG4J_PROP'";
    export log4j_config_file=/app/config/$LOG4J_PROP
fi

echo "Using java options config: $JAVA_OPTS"

# Set the environment variable for log4j configuration file
export JAVA_OPTS="$JAVA_OPTS -Dlog4j.configurationFile=file:$log4j_config_file"

java ${JAVA_OPTS} -jar -DCONDUCTOR_CONFIG_FILE=$config_file conductor-server.jar 2>&1 | tee -a /app/logs/server.log
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant