diff --git a/pom.xml b/pom.xml index fcc200b12d3b2970b2df46c11344fc971d223cfb..415536549ac6f471099e0b7eb5bd3ebbe0c0d2dd 100644 --- a/pom.xml +++ b/pom.xml @@ -196,6 +196,9 @@ <skipRuntimeScope>true</skipRuntimeScope> <!-- Disable .Net Assembly Analyzer --> <assemblyAnalyzerEnabled>false</assemblyAnalyzerEnabled> + <!-- Disable checking npm dev dependencies --> + <nodeAnalyzerEnabled>false</nodeAnalyzerEnabled> + <nodeAuditSkipDevDependencies>true</nodeAuditSkipDevDependencies> </configuration> <executions> <execution> diff --git a/smp-parent-pom/pom.xml b/smp-parent-pom/pom.xml index 74b0eb7ed54945093f5660a126f65c432356f85a..7a7d31293a14b73e731342f12a9f3a6d8085f136 100644 --- a/smp-parent-pom/pom.xml +++ b/smp-parent-pom/pom.xml @@ -93,6 +93,7 @@ <xmlunit.version>2.5.1</xmlunit.version> <hamcrest.version>2.0.0.0</hamcrest.version> <jackson.version>2.13.0</jackson.version> + <logback.version>1.2.6</logback.version> <!-- jacoco, sonar code coverage settings start --> <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> @@ -380,9 +381,9 @@ <version>${guava.version}</version> </dependency> <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-log4j12</artifactId> - <version>${slf4j.version}</version> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + <version>${logback.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> diff --git a/smp-server-library/pom.xml b/smp-server-library/pom.xml index 75b0dc1f7655e23af68809bccb29474f1369714b..4489742cc1cfb645e3b5c6c8d671a3f85f993b29 100644 --- a/smp-server-library/pom.xml +++ b/smp-server-library/pom.xml @@ -63,8 +63,8 @@ <artifactId>slf4j-ext</artifactId> </dependency> <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-log4j12</artifactId> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/FileProperty.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/FileProperty.java index 50c0db98bb2edeef20694b60b94447fe8c6c617c..03bd157c7a8e623dce8171839dc0e4e8c084722e 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/FileProperty.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/FileProperty.java @@ -1,11 +1,13 @@ package eu.europa.ec.edelivery.smp.config; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.joran.JoranConfigurator; +import ch.qos.logback.core.joran.spi.JoranException; import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException; import eu.europa.ec.edelivery.smp.logging.SMPLogger; import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.LogManager; -import org.apache.log4j.PropertyConfigurator; +import org.slf4j.LoggerFactory; import java.io.File; import java.io.FileInputStream; @@ -32,39 +34,33 @@ public class FileProperty { } public static void updateLog4jConfiguration(String logFileFolder, String logPropertyFile, String configurationFolder) { - Properties props = new Properties(); - try { - InputStream configStream = null; - if (!StringUtils.isBlank(logPropertyFile)) { - File f = new File(logPropertyFile); - if (!f.exists()) { - LOG.info("Log configuration file: {} not exists.", f.getAbsolutePath()); - f = new File(configurationFolder, logPropertyFile); - LOG.info("Set log configuration file: {}.", f.getAbsolutePath()); - } - if (f.exists()) { - LOG.info("Set log configuration: {}.",f.getAbsolutePath()); - configStream = new FileInputStream(f); - } - } - // if null use default properties - if (configStream == null) { - LOG.info("Set default log configuration."); - configStream = FileProperty.class.getResourceAsStream("/smp-log4j.properties"); - } - props.load(configStream); - configStream.close(); - } catch (IOException e) { - LOG.info("Error occurred while loading default LOG configuration.", e); + if (StringUtils.isNotBlank(logFileFolder)) { + System.setProperty(PROPERTY_LOG_FOLDER, logFileFolder); + } + + File f = new File(logPropertyFile); + if (!f.exists()) { + LOG.info("Log configuration file: {} not exists.", f.getAbsolutePath()); + f = new File(configurationFolder, logPropertyFile); + LOG.info("Set log configuration file: {}.", f.getAbsolutePath()); + + } + // if configuration file exist update configuration + if (f.exists()) { + setLogConfiguration(f); } - // set - if (!StringUtils.isBlank(logFileFolder)) { - LOG.info("Set log4j.appender.MainLogFile.File:{}. ", logFileFolder + "/edelivery-smp.log"); - props.setProperty("log4j.appender.MainLogFile.File {}", logFileFolder + "/edelivery-smp.log"); + } + + public static void setLogConfiguration(File configurationFile) { + try (InputStream configStream = new FileInputStream(configurationFile)) { + LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); + JoranConfigurator configurator = new JoranConfigurator(); + configurator.setContext(context); + configurator.doConfigure(configStream); // loads logback file + } catch (IOException | JoranException e) { + LOG.info("Error occurred while loading LOG configuration.", e); } - LogManager.resetConfiguration(); - PropertyConfigurator.configure(props); } public static Properties getFileProperties() { diff --git a/smp-server-library/src/main/resources/logback.xml b/smp-server-library/src/main/resources/logback.xml new file mode 100644 index 0000000000000000000000000000000000000000..10dd2cf59904b282efdc42c1ed8cd220c06f6e6d --- /dev/null +++ b/smp-server-library/src/main/resources/logback.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<configuration> + <!-- pattern definition --> + <property name="encoderPattern" value="%d{ISO8601} [%X{d_user}] [%X{d_domain}] [%X{d_messageId}] [%thread] %5p %c{1}:%L - %m%n" scope="global"/> + <property name="consolePattern" value="%d{ISO8601} [%X{d_user}] [%X{d_domain}] [%X{d_messageId}] [%thread] %5p %c{1}:%L - %m%n" scope="global"/> + + <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.folder:-logs}/edelivery-smp.log</file> + <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> + <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator"> + <marker>SECURITY</marker> + <marker>BUSINESS</marker> + </evaluator> + <onMismatch>NEUTRAL</onMismatch> + <onMatch>DENY</onMatch> + </filter> + <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> + <!-- rollover daily --> + <fileNamePattern>${log.folder:-logs}/edelivery-smp-%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <!-- each file should be at most 30MB, keep 60 days worth of history, but at most 20GB --> + <maxFileSize>30MB</maxFileSize> + <maxHistory>60</maxHistory> + <totalSizeCap>20GB</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>${encoderPattern}</pattern> + </encoder> + </appender> + + + + <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> + <Target>System.out</Target> + <encoder> + <pattern>${consolePattern}</pattern> + </encoder> + </appender> + + <logger name="eu.europa.ec.edelivery.smp" level="INFO" /> + <root level="WARN"> + <appender-ref ref="file"/> + <appender-ref ref="stdout"/> + </root> +</configuration> \ No newline at end of file diff --git a/smp-server-library/src/main/resources/smp-log4j.properties b/smp-server-library/src/main/resources/smp-log4j.properties deleted file mode 100644 index dda52be7b4fd19bc1260e14e82000d1899954e05..0000000000000000000000000000000000000000 --- a/smp-server-library/src/main/resources/smp-log4j.properties +++ /dev/null @@ -1,17 +0,0 @@ -log4j.rootLogger = INFO, MainLogFile, console - -log4j.logger.eu.europa.ec.edelivery.smp = INFO -log4j.additivity.eu.europa.ec.edelivery.smp = true - - -log4j.appender.console = org.apache.log4j.ConsoleAppender -log4j.appender.console.layout = org.apache.log4j.EnhancedPatternLayout -log4j.appender.console.layout.ConversionPattern = %d{ISO8601}{Europe/Brussels} [%X{user}] [%X{requestId}] %-5p %c{1}:%L - %m%n - - -log4j.appender.MainLogFile = org.apache.log4j.DailyRollingFileAppender -log4j.appender.MainLogFile.DatePattern = '.'yyyy-MM-dd -log4j.appender.MainLogFile.File = ./logs/edelivery-smp.log -log4j.appender.MainLogFile.append = true -log4j.appender.MainLogFile.layout = org.apache.log4j.EnhancedPatternLayout -log4j.appender.MainLogFile.layout.ConversionPattern = %d{ISO8601}{Europe/Brussels} [%X{user}] [%X{requestId}] %-5p %c{1}:%L - %m%n diff --git a/smp-webapp/src/main/resources/log4j.properties b/smp-webapp/src/main/resources/log4j.properties deleted file mode 100644 index b760424a8f00935e80cb9e305497b0766223dfb7..0000000000000000000000000000000000000000 --- a/smp-webapp/src/main/resources/log4j.properties +++ /dev/null @@ -1,34 +0,0 @@ -# -# Copyright 2017 European Commission | CEF eDelivery -# -# Licensed under the EUPL, Version 1.2 or - as soon they will be approved by the European Commission - subsequent versions of the EUPL (the "Licence"); -# You may not use this work except in compliance with the Licence. -# -# You may obtain a copy of the Licence attached in file: LICENCE-EUPL-v1.2.pdf -# -# Unless required by applicable law or agreed to in writing, software distributed under the Licence is distributed on an "AS IS" basis, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the Licence for the specific language governing permissions and limitations under the Licence. -# - -log4j.rootLogger=INFO, stdout, logfile - -# A1 is set to be a ConsoleAppender. -log4j.appender.stdout=org.apache.log4j.ConsoleAppender - -# A1 uses PatternLayout. -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%d [%p] %c %x - %m%n - -# log4j.logger.org.springframework=DEBUG - -# Second appender to write to a logfile -log4j.appender.logfile=org.apache.log4j.RollingFileAppender -log4j.appender.logfile.File=logs/edelivery-smp.log -log4j.appender.logfile.MaxFileSize=5MB -# Keep three backup files. -log4j.appender.logfile.MaxBackupIndex=3 -# Pattern to output: date priority [category] - message -log4j.appender.logfile.layout=org.apache.log4j.PatternLayout -log4j.appender.logfile.layout.ConversionPattern=%d{ISO8601} %p %c - %m%n -