Springboot с работой журнала, с log4j2 работает, но не работает при использовании обоихJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Springboot с работой журнала, с log4j2 работает, но не работает при использовании обоих

Сообщение Anonymous »

Я наблюдаю проблему при отправке журналов как в log4j2, так и при входе в систему с помощью kafka.
Вот код моего очень простого приложения Springboot:

Код: Выделить всё

@SpringBootApplication
public class QuestionApplication {

public static void main(String[] args) throws Exception {
SpringApplication.run(QuestionApplication.class, args);
HelloWorld helloWorld = new HelloWorld();
HelloWorld.createLogs();
}
}

Код: Выделить всё

public class HelloWorld {

private static final Logger logger = LoggerFactory.getLogger(HelloWorld.class);

public static void createLogs() throws JsonProcessingException {
int k = 0;
boolean b = true;
while (b) {
try{
if(Math.random() > 0.5){
logger.info("ISSUE HERE -> custom logs and send log  messages  to Kafka topic at " +
DateTimeFormatter.ofPattern("HH:mm:ss").format(LocalDateTime.now()));
int i =  2 / 0;
b = k < Integer.MAX_VALUE;
Thread.sleep(1000);
} else{
}
} catch (Exception re){
throw new RuntimeException("ISSUE HERE (custom log) error in try " + k, re);
} finally {
try {
int j = 2 / 0;
} catch (Exception e) {
logger.error("ISSUE HERE (custom log) error in finally " + k, e);
}
}
k++;
}
}
}
Проект ONE только с log4j2 + приложением kafka
С помощью приведенного выше кода в первом проекте мне нужно отправить журналы в тему Kafka.
Чтобы сделать Итак, я использую следующие зависимости:

Код: Выделить всё

  
org.springframework.boot
spring-boot-starter


org.springframework.boot
spring-boot-starter-logging




org.springframework.boot
spring-boot-starter-log4j2


org.springframework.boot
spring-boot-starter-web


org.apache.kafka
kafka-clients


org.apache.kafka
kafka-log4j-appender


org.apache.logging.log4j
log4j-layout-template-json

И этот файл log4j2.xml (не logback-spring.xml)

Код: Выделить всё






{
"some field": "1.0",
"parameters": {
"class": "%logger",
"message": "%message"
}
}


localhost:9093


















Это РАБОТАЕТ, и я могу видеть все журналы в темах Kafka.
Под всеми журналами я имею в виду мои собственные журналы (из logger.info()) и Springboot. журналы
Проект ДВА с только logback + приложением loki
С помощью того же Java-кода, что и выше, во втором проекте мне нужно отправить журналы в экземпляр loki.
Чтобы сделать Итак, я использую следующие зависимости:

Код: Выделить всё

   
com.github.loki4j
loki-logback-appender
1.6.0-m1


io.micrometer
micrometer-core

и это logback-spring.xml (а не log4j2.xml)

Код: Выделить всё






%d{yyyy-MM-dd HH:mm:ss} ${PID} %-5level --- [%thread] [${name},%X{traceId:-},%X{spanId:-}] %logger{36} : %msg%n





true

https://logs-prod-006.grafana.net/loki/api/v1/push

813123
123




name=${name},host=${HOSTNAME},level=%level,pid=${PID},thread=%thread
true



{
"somefield":"1.0",
"playload": {
"pid":"${PID}",
"class":"%logger",
"thread":"%thread",
"traceId":"%X{traceId}",
"spanId":"%X{spanId}",
"message":"%message"
}
}


true

false









Это РАБОТАЕТ, и я могу видеть все журналы в grafana loki.
Под всеми журналами я имею в виду мои собственные журналы (из logger.info()) и журналы Springboot.
Теперь в проекте ТРИ мне нужно объединить оба, мне нужно отправлять свои логи и в Кафку, и в Локи.
Поэтому я добавил оба log4j2.xml и logback-spring.xml в папку ресурсов.
Я объединил все зависимости в один pom и запустил программу.
Я ожидал увидеть все журналы в обоих местах.
Однако результаты:
  • Все журналы (logger.info()) журналы + журналы Springboot по умолчанию находятся в графане loki

    Но в теме kafka представлены только журналы Springboot по умолчанию, а пользовательские журналы отсутствуют.
Под журналом Springboot я имею в виду что-то вроде:

Код: Выделить всё

2024-12-13T04:35:32.364+08:00  INFO 4394 --- [  main] [ ] org.example.EventApplication             : No active profile set, falling back to 1 default profile: "default"
Вопрос, могу ли я спросить, почему пользовательские журналы оказались только в журналах Grafana, а не в Kafka?
Что сделать, чтобы я мог видеть все логи в обоих местах?

Подробнее здесь: https://stackoverflow.com/questions/792 ... when-using
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»