Functional and non functional application logging

44
6/14/22 | SLIDE 1

description

This presentation will help you understand the importance of logging in applications. Every project is encountered with this aspect, functional or non-functional.This will become more and more important with current innovations: mobile (~offline) applications, SOA-architectures, Cloud integration. An overview of the Java Logging-ecospace is discussed. Eventually, the results are processed and analyzed with facilitating tools. What is logging? Why logging? Who uses logs and what are they used for? What needs to be logged? How to log in Java Log processing and analysis

Transcript of Functional and non functional application logging

Page 1: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 1

Page 2: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 2

www.realdolmen.com

APPLICATION LOGGING

Page 3: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 3

ABOUT ME

Sander De Vos Software Engineer RealDolmen 2008 Past projects

MaTMa (M*) E-Metro (FOD-ECO) SP10B (FOD-FIN) MIK (FOD-MOB)

Page 4: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 4

QUOTES FROM THE FIELD

“Who needs logs? I sure don’t!” “Debugger is better! Sysout works too!” “Isn’t that what infrastructure does?” “It slows down disk and memory!” “It isn’t in the spec!” “We don’t know what to log – we’ll just log something!” “We don’t know how – we’ll just do it somehow!”

Page 5: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 5

AGENDA

What is logging Definition and Challenges

Why logging Who uses logs What logs are used for Functional or non-functional

What to log What will (not) help you Log message decomposed Guidelines

How to log in Java Logging in production Log processing and analysis

Page 6: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 6

WHAT IS LOGGING

Page 7: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 7

DEFINITION

“Logs may be referred to as log files, audit logs, or audit trails.

Logs also cover alerts, alarms and event records.“

“Logs are the recordings of one or more events occurring on information systems.”

“Logs can be organized based on the program, day, severity, host, or a number of other categories.“

Page 8: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 8

LOG CHALLENGES

Decentralization Cloud SOA

Volatility Multiple tiers and layers Archival Accessability Absence of critical information Random log formats

Page 9: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 9

WHY LOGGING

Page 10: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 10

WHO USES LOGS

Managed Services Security Teams

Monitor Detect Investigate Track Analyze

Auditors Developers

Debugging

Customer

Page 11: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 11

WHAT LOGS ARE USED FOR

Debugging and Forensics Fault monitoring Performance monitoring Troubleshooting Feature usage Security / Incident detection Regulatory and standards compliance

Page 12: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 12

FUNCTIONAL – NON-FUNCTIONAL LOGGING

Functional Audit Governance Security

Non-functional Faults, Errors, Exceptions Execution context Performance Component usage

Page 13: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 13

PUTTING IT ALL TOGETHER

Functional Logs Customer

Audit Always on Requirements

Scope known Years ‘Clutter, yuck, slow’

Non-Functional Logs System operator

Developer Sometimes on Errors, Exceptions,

Debug Scope not known Hours, Days ‘Might come in handy’

Page 14: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 14

WHAT TO LOG

Page 15: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 15

KEEP IN MIND

”What would help YOU at 3 AM in the morning? “

Image: Ambro / FreeDigitalPhotos.net

Page 16: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 16

WHAT WILL HELP YOU

Exact notice of what happened When Where How Who

Clear concise context information Analysis possible without application

Manual Semi-automated Automated

Remotely collectible files Low footprint Proven reliable and authentic

Page 17: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 17

WHAT WILL HELP YOU EXAMPLES

2011-05-31 08:46:11,308 +0200 INFO [eventlog.security] ACCESS OF ProfileServiceImpl.findProfiles BY [login: some_username]; Password: [PROTECTED]; Authenticated: true; Details: RemoteIpAddress: 192.168.156.17; SessionId: 8XyrNkLWv7FdXS… Granted Authorities:ROLE_USER,ROLE…

Page 18: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 18

WHAT WON’T HELP YOU

No details about the record No context information Inconsistent format or bad use Non-correlatable Subjective/interpretative message Too much useless log records Logging to one single big file

Page 19: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 19

WHAT WON’T HELP YOU – EXAMPLE #1

log4j: setFile called: ./logs/be/mobistar/network-status/log_functional.log, false

log4j: setFile ended tis nen default tis nen default Activations : 15 Deactivations : 0 In straigt to resource filter

Page 20: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 20

WHAT WON’T HELP YOU – EXAMPLE #2

INFO [dao.ProductDao] [] - FOUND 40 INFO [web.listeners.PhaseLogger] [] -

+RENDER_RESPONSE INFO [service.ProductFamilyService] [] - product in

family is true INFO [.dao.ProfileDao] [] - [OBJECTS] find profiles

Page 21: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 21

LOG MESSAGE DECOMPOSEDContext Meaning

WHEN Timestamp

WHERE System/Application/Component

WHO User

WHAT Action

RESULT Status

PRIORITY Severity, rank, level

Page 22: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 22

“A log record should be understandable by a human, and easily machine

processable.”

Page 23: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 23

LOGGING GUIDELINES: PRIORITIES

Fatal Application crash&burn

Error Exceptions Monitoring team alert

Warn Monitor health, performance

Info Informative Context Audit trail

Debug Extensive Context Development, Testing Troubleshooting

Page 24: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 24

LOGGING GUIDELINES: EXCEPTIONS

Handling Recover Log the details if critical

Not Handling, Translating Translate Handling logic if not propagating

Not Handling Propagate Someone else will handle (and log!)

Choose exceptions to log Defend from stacktrace chaos Choose what to log for each exception

Catching block has all context details!

Page 25: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 25

LOGGING GUIDELINES: CORRELATION

1 transaction = * log records Correlation necessary

Execution trail

Shared context variable Shared per transaction Reuse of context variables

Nested Diagnostic Context Map Diagnostic Context

Only one correlation Use a context unique variable Correlate transactions

Page 26: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 26

HOW TO LOG IN

Page 27: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 27

HOW LOGGING FRAMEWORKS WORK

Page 28: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 28

JAVA LOGGING FRAMEWORKS

Implementation System.out – System.err

Redirect output Java Util Logging Log4j Logback

Abstraction Commons Logging SLF4J

Page 29: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 29

JAVA UTIL LOGGING

Java 1.4+ Based on Log4J Less features out of the box

Console File Stream

Page 30: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 30

LOG4J

First framework Introduction of Logger, Appender, Level Hiearchical Loggers Configurable appenders, e.g.

MailAppender FileAppender SMTPAppender SocketAppender SyslogAppender

Leader quit and started logback

Page 31: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 31

COMMONS LOGGING

Apache Project API Bridge API-calls forward to

Log4j if on CP Falls back to JUL

Plagued Double Configuration Runtime dependency check Classpath Scanning

Discontinued v1.1.1 dates from end 2007

Page 32: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 32

SLF4J - LOGBACK

Two libraries to rule them all Slf4j

Comparable with commons-logging Parameter parsing Framework bridges Much more powerful

Logback Evolved log4j Implements Slf4j “Picking up where log4j leaves off”

Testing Filters on-need-base

Page 33: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 33

SLF4J BINDING

Page 34: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 34

SLF4J BRIDGING

Page 35: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 35

KEEPING IT PERFORMANT

String concatenation LOGGER.debug("Hello " + name); Protected block

if (logger.isDebugEnabled()) { LOGGER.debug("Hello " + name);}

Slf4j LOGGER.debug("Hello {}", name);

Page 36: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 36

CONTEXT VARIABLES IN PRACTICE

NDC.push(correlationId); app.logMe("Hello world!"); NDC.pop();

Use %x in Pattern ConversionPattern = %x %d %m %n

correlationId 2011-06-21 09:20:41 [INFO] Hello world!

Page 37: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 37

SPECIALIZED LOGGERS

Logger for class Fine-tune log Execution trace How distinguish

Security Performance Business

Specialized Loggers Priorities Output handlers

Grouped logging

Page 38: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 38

LOGGING IN PRODUCTION

Only necessary logging Situation -> turn on debug logging

No restart: Dynamic Reloading ‘Watch’ file for changes

Log file management Rolling file Seperation of concerns

Clustering Different systems generate messages Synchronization of timestamps Correlation on host-specific files

Page 39: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 39

MY OPINION

Importance of logging will grow Mobile / offline applications Cloud integration System interaction

Logging standards enterprisewide Standardization of logging effort Inexpensive exercise

Draft a standard Build adapters / patterns Enforce standards

Page 40: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 40

LOG PROCESSING AND ANALYSIS

Page 41: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 41

LOG ANALYSIS

Bang for your buck XpoLog

http://www.xpolog.com Licensed Faster

Splunk http://www.splunk.com Free Edition ‘Slow’ AJAX feel Nice graphics Modular (http://www.splunkbase.com)

Tuning your pattern is important?

Page 42: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 42

DEMO

Page 43: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 43

Page 44: Functional and non functional application logging

APRIL 11, 2023 | SLIDE 44

THANK YOU

For more information:visit our website WWW.REALDOLMEN.COM

Follow us on:

Selected presentations are available on:

Or scan this QR code with your Smartphone to immediately go to the website