Configuration Logs Nexus 3

De EjnTricks

Le package Nexus met en place un grand nombre de logs en fonction des briques logicielles embarquées. Cet article présente la configuration de ces traces ainsi que leur gestion.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Icon-Configuration-Settings.png Paramétrage

Lors de l'installation du service, les fichiers logs ont été externalisés dans le répertoire /var/log/nexus3, et un lien dans le répertoire de travail, emplacement sonatype-work/nexus3/log a été créé.

Quatre fichiers de trace sont disponibles pour une instance nexus.

  • jvm.log, trace de la JVM;
  • karaf.log, trace du container Karaf;
  • nexus.log, trace applicative;
  • request.log, trace d'accès.


Java format icon.png Trace JVM

Le fichier jvm.log est configuré depuis les options de la JVM, spécifiées dans le fichier bin/nexus.vmoptions.

 
-Xms1200M
-Xmx1200M
-XX:MaxDirectMemorySize=2G
-XX:+UnlockDiagnosticVMOptions
-XX:+UnsyncloadClass
-XX:+LogVMOutput
-XX:LogFile=../sonatype-work/nexus3/log/jvm.log
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=../sonatype-work/nexus3
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
-Duser.home=../sonatype-work/home3
-Dkaraf.startLocalConsole=false


Start-icon.png Trace container

Le projet Karaf est utilisé pour gérer les briques. Le fichier spécifique karaf.log est configuré dans le fichier etc/karaf/custom.properties.

 
#
# All the values specified here will override the default values given
# in config.properties.
#

karaf.systemBundlesStartLevel=50

#
# You can place any customized configuration here.
#

# A very small amount of logging before pax-logging is enabled ends up here
karaf.bootstrap.log=${karaf.data}/log/karaf.log

# early load of mvn: protocol config
${includes}=org.ops4j.pax.url.mvn.cfg

karaf.lock.class=org.sonatype.nexus.karaf.NexusFileLock

# Temporary workaround for https://issues.apache.org/jira/browse/FELIX-5184
felix.native.osname.alias.windowsserver2012=windows server 2012,win32

A noter que l'emplacement contient la variabe karaf.data. A noter que celle-ci est configurée dans le fichier bin/nexus.vmoptions avec la valeur ../sonatype-work/nexus3. Par conséquent, l'emplacement de la trace sera ../sonatype-work/nexus3/log/karaf.log.


Run-icon.png Trace Applicative

La configuration du fichier trace nexus.log est réalisée dans le fichier etc/logback/logback.xml.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
    <resetJUL>true</resetJUL>
  </contextListener>

  <jmxConfigurator/>

  <appender name="osgi" class="org.ops4j.pax.logging.logback.appender.PaxAppenderDelegate"/>

  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{"yyyy-MM-dd HH:mm:ss,SSSZ"} %-5p [%thread] %mdc{userId:-*SYSTEM} %c - %m%n</pattern>
    </encoder>
  </appender>

  <appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>${karaf.data}/log/nexus.log</File>
    <Append>true</Append>
    <encoder>
      <pattern>%d{"yyyy-MM-dd HH:mm:ss,SSSZ"} %-5p [%thread] %mdc{userId:-*SYSTEM} %c - %m%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${karaf.data}/log/nexus-%d{yyyy-MM-dd}.log.gz</fileNamePattern>
      <maxHistory>90</maxHistory>
    </rollingPolicy>
  </appender>

  <appender name="metrics" class="org.sonatype.nexus.pax.logging.InstrumentedAppender"/>

  <logger name="org.eclipse.jetty.webapp" level="INFO"/>
  <logger name="org.eclipse.jetty.webapp.StandardDescriptorProcessor" level="WARN"/>

  <logger name="org.apache.aries" level="WARN"/>
  <logger name="org.apache.felix" level="WARN"/>
  <logger name="org.apache.karaf" level="WARN"/>

  <include file="${karaf.data}/etc/logback/logback-overrides.xml" optional="true"/>

  <root level="${root.level:-INFO}">
    <appender-ref ref="osgi"/>
    <appender-ref ref="console"/>
    <appender-ref ref="logfile"/>
    <appender-ref ref="metrics"/>
  </root>
</configuration>

A noter que comme pour le container, l'emplacement utilise la variable d'environnement karaf.data.

De plus, une rotation journalière est mise en place, avec conservation de 90 jours.


Browser Icon.png Trace accès

Le fichier request.log contient les traces d'accès à l'application, dont la configuration se trouve dans le fichier etc/logback/logback-access.xml.

<?xml version="1.0"?>
<configuration>
  <appender name="request.logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>${karaf.data}/log/request.log</File>
    <Append>true</Append>
    <encoder class="org.sonatype.nexus.pax.logging.AccessPatternLayoutEncoder">
      <pattern>%clientHost %l %user [%date] "%requestURL" %statusCode %bytesSent %elapsedTime "%header{User-Agent}"</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${karaf.data}/log/request-%d{yyyy-MM-dd}.log.gz</fileNamePattern>
      <maxHistory>90</maxHistory>
    </rollingPolicy>
  </appender>

  <appender-ref ref="request.logfile"/>
</configuration>

A noter', la variable karaf.data est encore utilisée pour configurer l'emplacement, ainsi qu'une rotation journalière.


Delete-file-icon.png Script purge des logs

Lors de la toute première installation de Nexus en version 2.X, un script de purge avait été mis en place pour palier le manque de rotation et purge des traces.

Cependant, avec la version 3.X, ce script n'est plus nécessaire. La planification sous Anacron est donc supprimée.

#sudo rm /etc/cron.weekly/nexus_log_purge

Puis le script est supprimé.

#sudo rm /var/opt/nexus/nexus_log_purge.sh