21 Mayıs 2019 Salı

SpringBootLogging logging Ayarları

Giriş
Spring loglama için logback kullanır. Açıklaması şöyle.
Spring Boot uses Logback by default rather than SLF4J.
application.properties vs logback.xml
- Basit loglama ayarlarını belirtmek için application.properties kullanır. Detayları application.properties - Basit logging Ayarları yazısına taşıdım
- Daha karmaşık şeyler için logback.xml kullanılabilir. 

logback.xml Dosyasının Yeri
logback.xml dosyasının yerini belirtmek için java'yı çalıştırırken şöyle yaparız
-Dlogging.config=config/logback.xml
Örnek
Profile seçimine göre loglama ayarlarını değiştirmek için şöyle yaparız
logging.config: classpath:log4j2-spring.xml
---
spring:
   profiles: test
logging.config: classpath:log4j2-spring.xml
---
spring:
   profiles: devel
logging.config: classpath:log4j2-spring.xml
---
spring:
   profiles: prod
logging.config: classpath:log4j2-spring-prod.xml
Örnek
Eğer tüm ayarları kendimiz vermek istersek şöyle yaparız
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-A variable "LOGS"  is defined with the given value -->
  <property name="LOGS" value="./logs" />

  <!-Configuration for console logging -->
  <appender name="Console"
    class="ch.qos.logback.core.ConsoleAppender">
   <layout class="ch.qos.logback.classic.PatternLayout">
   <Pattern>
     %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)]        %yellow(%C{1.}): %msg%n%throwable
   </Pattern>
   </layout>
  </appender>

  <!-Configuration for file logging -->
  <appender name="RollingFile"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOGS}/spring-boot-logger.log</file>
    <encoder
      class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
    </encoder>
    <rollingPolicy
      class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- rollover daily and when the file reaches 10 MegaBytes -->
      <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM- dd}.%i.log
      </fileNamePattern> 
      <timeBasedFileNamingAndTriggeringPolicy
        class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
      <maxFileSize>10MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
  </appender>

  <!-Root level logging as info by default for both console and file logging -->
  <root level="info">
   <appender-ref ref="RollingFile" />
   <appender-ref ref="Console" />
  </root>

  <!-Service package to have trace level logging for both console and file logging -->
  <logger name="com.project.service " level="trace" additivity="false">
   <appender-ref ref="RollingFile" />
   <appender-ref ref="Console" />
  </logger>
</configuration>

Basit Log Ayarları


Örnek - Log Dosyasının Yolu
Şöyle yaparız
logging.file=/home/ubuntu/spring-boot-app.log
Örnek - Root Loglama Seviyesini Ayarlamak
Şöyle yaparız
logging.level.root=DEBUG
Örnek - Loglama Patern'i Değiştirmek
Şöyle yaparız.
logging.level.root=info
logging.path=path
logging.file=${logging.path}/log.log
logging.pattern.file=
  %d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n
logging.pattern.console=
  %d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %n%highlight%msg%n
Örnek - logback.xml
Şöyle yaparız.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{dd-MM-yyyy HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level)
               %logger{36}.%M - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="off">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>


Hiç yorum yok:

Yorum Gönder