Size: a a a

2021 January 29

DD

Denis Deniben in pro.jvm
Георгий Емельянов
Hibernate Envers. Она фиксирует изменения сущности, произведенные в рамках транзакции, в отдельной таблице автоматически. Настраивается (можно выбрать конкретные колонки для аудита).
pgAudit - для постгреса. Тоже самое, что Envers, но средствами БД.
спасибо, пойду смотреть
источник

Y

Yrtimd in pro.jvm
Привет, кто-то знает как я могу получить значением переменной окружения, которая сама является значением другой переменной окружения в linux ?
источник

AK

Alexander Komarov in pro.jvm
Yrtimd
Привет, кто-то знает как я могу получить значением переменной окружения, которая сама является значением другой переменной окружения в linux ?
казалось бы при запуске она должна "развернуться" в итоговое значение
источник

Y

Yrtimd in pro.jvm
Alexander Komarov
казалось бы при запуске она должна "развернуться" в итоговое значение
Но на деле не так((
a=hi
echo $"$a"_world
out> hi_world
источник

AE

Alexandr Emelyanov in pro.jvm
Yrtimd
Но на деле не так((
a=hi
echo $"$a"_world
out> hi_world
что не так?
источник

Y

Yrtimd in pro.jvm
Alexandr Emelyanov
что не так?
Хотелось бы чтобы это работало вот так
hi_world=goodbye
a=hi
echo $"$a"_world
out> goodbye
источник

AE

Alexandr Emelyanov in pro.jvm
или ожидалось "$a"_world ?
источник

A

Anvar in pro.jvm
Yrtimd
Привет, кто-то знает как я могу получить значением переменной окружения, которая сама является значением другой переменной окружения в linux ?
Привет глянь eval, может оно
источник

AE

Alexandr Emelyanov in pro.jvm
Yrtimd
Хотелось бы чтобы это работало вот так
hi_world=goodbye
a=hi
echo $"$a"_world
out> goodbye
echo $`$a`_world

но это таки в другой чат и к java отношения не имеет
источник

AE

Alexandr Emelyanov in pro.jvm
Alexandr Emelyanov
echo $`$a`_world

но это таки в другой чат и к java отношения не имеет
так кстати тоже не будет
источник

AK

Alexander Komarov in pro.jvm
источник

Y

Yrtimd in pro.jvm
Anvar
Привет глянь eval, может оно
Спасибо)

1) foo=10 x=foo
2) y='$'$x
3) echo $y
4) $foo
5) eval y='$'$x
6) echo $y
7) 10
источник

AK

Alexander Komarov in pro.jvm
вот это что ли хотите?
источник

A

Aleksandr in pro.jvm
Подскажите, а через клиент прометеуса можно выполнять запросы?
Что-то по типу
sum(rate(some_counterl[1h]))
источник

А

Артём Курилко... in pro.jvm
Alexey Genus
Ааа, ну так тут нет аппендера в консоль, вот и пусто в логе
да ты прав, исправил эту ошибку, но все равно не получается передать сообщения в логстеш, у тебя есть пример logback.xml для этих целей?
источник

AG

Alexey Genus in pro.jvm
Конкретно под TCP нет, но это же обычный аппендер
источник

NR

Nikolaj Rudakov in pro.jvm
доброго.
spring boot + jpa + hibernate. бд psql. есть таблица с uuid полем. без всяких лишних аннотаций (просто через jpa) findAll() по репозиторию работает. но если пытаюсь сделать нативный запрос через @Query("SELECT * FROM table", nativeQuery=true), то выдаёт ошибку
```
org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
```
если в запросе закастовать uuid поля (cast(id AS varchar)), то работает.
я так понимаю, проблема, что хибер не может замаппить uuid поля в нативных запросах. почему? и что с этим можно сделать?
источник

А

Артём Курилко... in pro.jvm
Alexey Genus
Конкретно под TCP нет, но это же обычный аппендер
это мои настройки, но все равно сообщения не передаются в запущенный логстеш
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

   <springProperty scope="context" name="springAppName" source="spring.application.name"/>
   <!-- Example for logging into the build folder of your project -->
   <property name="LOG_FILE" value="${BUILD_FOLDER:-build}/${springAppName}"/>

   <!-- You can override this to have a custom pattern -->
   <property name="CONSOLE_LOG_PATTERN"
             value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>

   <!-- Appender to log to console -->
   <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
       <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
           <!-- Minimum logging level to be presented in the console logs-->
           <level>DEBUG</level>
       </filter>
       <encoder>
           <pattern>${CONSOLE_LOG_PATTERN}</pattern>
           <charset>utf8</charset>
       </encoder>
   </appender>

   <!-- Appender to log to file -->
   <appender name="flatfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
       <file>${LOG_FILE}</file>
       <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
           <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.gz</fileNamePattern>
           <maxHistory>7</maxHistory>
       </rollingPolicy>
       <encoder>
           <pattern>${CONSOLE_LOG_PATTERN}</pattern>
           <charset>utf8</charset>
       </encoder>
   </appender>

   <!-- Appender to log to file in a JSON format -->
   <appender name="logstash" class="ch.qos.logback.core.rolling.RollingFileAppender">
       <file>${LOG_FILE}.json</file>
       <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
           <fileNamePattern>${LOG_FILE}.json.%d{yyyy-MM-dd}.gz</fileNamePattern>
           <maxHistory>7</maxHistory>
       </rollingPolicy>
       <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
           <providers>
               <timestamp>
                   <timeZone>UTC</timeZone>
               </timestamp>
               <pattern>
                   <pattern>
                       {
                       "severity": "%level",
                       "service": "${springAppName:-}",
                       "trace": "%X{traceId:-}",
                       "span": "%X{spanId:-}",
                       "baggage": "%X{key:-}",
                       "pid": "${PID:-}",
                       "thread": "%thread",
                       "class": "%logger{40}",
                       "rest": "%message"
                       }
                   </pattern>
               </pattern>
           </providers>
       </encoder>
   </appender>

   <appender name="STASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
       <destination>127.0.0.1:9600</destination>

       <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
           <providers>
               <mdc />
               <context />
               <logLevel />
               <loggerName />

               <pattern>
                   <pattern>
                       {
                       "serviceName": "gateway-service"
                       }
                   </pattern>
               </pattern>

               <threadName />
               <message />
               <logstashMarkers />
               <stackTrace />
           </providers>
       </encoder>
   </appender>

   <root level="INFO">
       <appender-ref ref="console"/>
       <!--<appender-ref ref="logstash"/>-->
       <!--<appender-ref ref="flatfile"/>-->
   </root>
</configuration>
источник

AG

Alexey Genus in pro.jvm
Артём Курилко
это мои настройки, но все равно сообщения не передаются в запущенный логстеш
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

   <springProperty scope="context" name="springAppName" source="spring.application.name"/>
   <!-- Example for logging into the build folder of your project -->
   <property name="LOG_FILE" value="${BUILD_FOLDER:-build}/${springAppName}"/>

   <!-- You can override this to have a custom pattern -->
   <property name="CONSOLE_LOG_PATTERN"
             value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>

   <!-- Appender to log to console -->
   <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
       <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
           <!-- Minimum logging level to be presented in the console logs-->
           <level>DEBUG</level>
       </filter>
       <encoder>
           <pattern>${CONSOLE_LOG_PATTERN}</pattern>
           <charset>utf8</charset>
       </encoder>
   </appender>

   <!-- Appender to log to file -->
   <appender name="flatfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
       <file>${LOG_FILE}</file>
       <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
           <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.gz</fileNamePattern>
           <maxHistory>7</maxHistory>
       </rollingPolicy>
       <encoder>
           <pattern>${CONSOLE_LOG_PATTERN}</pattern>
           <charset>utf8</charset>
       </encoder>
   </appender>

   <!-- Appender to log to file in a JSON format -->
   <appender name="logstash" class="ch.qos.logback.core.rolling.RollingFileAppender">
       <file>${LOG_FILE}.json</file>
       <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
           <fileNamePattern>${LOG_FILE}.json.%d{yyyy-MM-dd}.gz</fileNamePattern>
           <maxHistory>7</maxHistory>
       </rollingPolicy>
       <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
           <providers>
               <timestamp>
                   <timeZone>UTC</timeZone>
               </timestamp>
               <pattern>
                   <pattern>
                       {
                       "severity": "%level",
                       "service": "${springAppName:-}",
                       "trace": "%X{traceId:-}",
                       "span": "%X{spanId:-}",
                       "baggage": "%X{key:-}",
                       "pid": "${PID:-}",
                       "thread": "%thread",
                       "class": "%logger{40}",
                       "rest": "%message"
                       }
                   </pattern>
               </pattern>
           </providers>
       </encoder>
   </appender>

   <appender name="STASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
       <destination>127.0.0.1:9600</destination>

       <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
           <providers>
               <mdc />
               <context />
               <logLevel />
               <loggerName />

               <pattern>
                   <pattern>
                       {
                       "serviceName": "gateway-service"
                       }
                   </pattern>
               </pattern>

               <threadName />
               <message />
               <logstashMarkers />
               <stackTrace />
           </providers>
       </encoder>
   </appender>

   <root level="INFO">
       <appender-ref ref="console"/>
       <!--<appender-ref ref="logstash"/>-->
       <!--<appender-ref ref="flatfile"/>-->
   </root>
</configuration>
<!--<appender-ref ref="logstash"/>-->
       <!--<appender-ref ref="flatfile"/>-->

Серьёзно? Он закоменитрован
источник

А

Артём Курилко... in pro.jvm
Alexey Genus
<!--<appender-ref ref="logstash"/>-->
       <!--<appender-ref ref="flatfile"/>-->

Серьёзно? Он закоменитрован
раскомментировал, не помогло, также в проекте есть файл logstash.conf
input {
 file {
   type => "java"
   # Logstash insists on absolute paths...
   path => "E:/ppltest/TestRestApplication/server.log"
   codec => multiline {
     pattern => "^%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{TIME}.*"
     negate => "true"
     what => "previous"
   }
 }
}filter {
 #If log line contains tab character followed by 'at' then we will tag that entry as stacktrace
 if [message] =~ "\tat" {
   grok {
     match => ["message", "^(\tat)"]
     add_tag => ["stacktrace"]
   }
 }  #Grokking Spring Boot's default log format
 grok {
   match => [ "message",
              "(?<timestamp>%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{TIME})  %{LOGLEVEL:level} %{NUMBER:pid} --- \[(?<thread>[A-Za-z0-9-]+)\] [A-Za-z0-9.]*\.(?<class>[A-Za-z0-9#_]+)\s*:\s+(?<logmessage>.*)",
              "message",
              "(?<timestamp>%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{TIME})  %{LOGLEVEL:level} %{NUMBER:pid} --- .+? :\s+(?<logmessage>.*)"
            ]
 }  #Parsing out timestamps which are in timestamp field thanks to previous grok section
 date {
   match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss.SSS" ]
 }
}output {
   stdout {
       codec => rubydebug
   }
   elasticsearch{
       hosts=>["localhost:9200"]
       index=>"todo-logstash-%{+YYYY.MM.dd}"
   }
}
источник