Project

General

Profile

Actions

Logging guidelines

Framework

SLF4J (Simple Logging Facade for Java)

Documentation

Maven

No dependency SHOULD be added to the module POM. The slf4j dependency is already defined in the ecard client root POM.
slf4j needs a backend implementation. For the tests, logback-classic is pulled in by the root POM. For production use, the client artifact must pull in a compile dependency on a backend and configure it appropriately.

Preamble

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

Levels

Exceptions

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

try{
 ...
} catch (Exception e){
  logger.error(ex.getMessage(), ex);
}

Or set a descriptive message:
try{
 ...
} catch (Exception e){
  logger.error("Error while reading value X.", ex);
}

Messages

Messages including APDUs, eCard-API messages, PAOS messages.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

logger.debug("Message received:\n{}", message);
logger.debug("Message sent:\n{}", message);

Events

E.g. GUI events.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

logger.debug("Event: {}", event);

Notes

Trace statements as the following example shows are omitted, because there is a slf4j agent which can automate this task.

public void foo(Bar b) {
    logger.trace("Enter function foo: {}", b);
    ...

Updated by Hans-Martin Haase over 8 years ago · 4 revisions

Also available in: PDF HTML TXT