Jako argumenty za dwoma zdaniami dodam: - Zawsze powinny być jednowierszowe, bo wielolinijkowe ciężko przetwarzać. Ciężko zrobić grepa, a także narzędzia jak Logstash czy Kibana źle sobie radzą z wieloma wierszami w logach. - Mogą być wielowierszowe, bo lepiej je się czyta (np. JSON-a czy XML-a w logach jak jest potrzeba). A nawet sama Java produkuje wielowierszowy log w stacktrace. - Zawsze powinny być jednowierszowe, bo jednak stracktrace to sytuacja wyjątkowa, więc
@mk321: Jeśli logi będą przetwarzane przez jakieś automaty to najlepiej jednolinijkowe. Wtedy ten XML może zostać spokojnie sparsowany i sformatowany przez jakieś narzędzia do przeglądania logów. Jeśli ma je czytać człowiek to niech będzie wielolinijkowy
@mk321: mogą być mieszane. W zależności od treści jakiej poszukujemy możemy wyszukiwać pojedynczych wierszy lub całych zakresów, jeżeli wiemy, że szukane dane są w wielu liniach. Np. szukamy słowa "error" i spodziewamy się jednowierszowych rekordów. Natomiast gdy szukamy "exception" to odczytujemy cały np. callstack.
Czy logi powinny być zawsze jednolinijkowe czy mogą być wielolinijkowe?
Jeśli to ważne, to chodzi o ekosystem Javowy.
Logi:
- Zawsze powinny być jednowierszowe, bo wielolinijkowe ciężko przetwarzać. Ciężko zrobić grepa, a także narzędzia jak Logstash czy Kibana źle sobie radzą z wieloma wierszami w logach.
- Mogą być wielowierszowe, bo lepiej je się czyta (np. JSON-a czy XML-a w logach jak jest potrzeba). A nawet sama Java produkuje wielowierszowy log w stacktrace.
- Zawsze powinny być jednowierszowe, bo jednak stracktrace to sytuacja wyjątkowa, więc
Jeśli ma je czytać człowiek to niech będzie wielolinijkowy
Jednak wszystko zależy od konkretnego przypadku.