+1
On Sun, Feb 16, 2014 at 2:47 PM, Thomas Mortagne
<thomas.mortagne(a)xwiki.com>wrote;wrote:
+1
On Sat, Feb 15, 2014 at 6:13 PM, vincent(a)massol.net <vincent(a)massol.net>
wrote:
Hi devs,
On
http://dev.xwiki.org/xwiki/bin/view/Community/JavaCodeStyle#HLoggingBestPra… have
some best practices defined for logging.
I'd like to propose some additions.
Best practices:
* Use SLF4J
* If you're in a component get the logger injected using @Inject private
Logger logger otherwise use:
private static final Logger LOGGER =
LoggerFactory.getLogger(My.class);
* Use logger.info() when it's absolutely necessary for the user to see
the
message in the logs. Usually only used at startup and we want to limit
what the user sees to the absolute necessary to avoid swamping him.
* Use logger.warning() when an error happens but
it doesn't compromise
the stability and general working of an XWiki instance. A
warning just
shows the user that something has gone wrong and it should provide him with
as much information as possible to solve the issue. Do not print a stack
trace when you output a warning since stack traces fill the logs and should
be reserved for errors. In the view of users stack traces are synonymous
with errors. We want it to be easy for admins to visually check the log
files and see important problems (ie errors).
* Use logger.error() when there's an
important problem that compromises
the stability of the XWiki instance or that
prevent an important system
from working and that should not have happened. Always pass a stack trace
when logging errors since it's something that shouldn't have happened an a
developer will need to debug the problem to fix it.
* Always log as much information as possible to
make it easier to
understand what's going on.
* Surround parameters with "[]" in
order to separate visually the text
from the parameters and also clearly notice
when leading/trailing spaces
are located in parameters.
* For improved performances, always use the
vararg signature of SLF4J
for logging parameters and do not concatenate them
manually:
this.logger.debug("Test message with [{}] and [{}]", param1, param2);
vs
this.logger.debug("Test message with [" + param1 + "] and [" + param2
+
"]", param1, param2);
* When logging a warning, we don't want to log the full stack trace but
it's still interesting from time to time to display the root issue. If you
do the following you won't get the root issue:
LOGGER.warn("Failed to determine if the index exists: [{}]. Trying to
recreate the index..", e.getMessage());
>
> Instead use ExceptionUtils from commons lang:
LOGGER.warn("Failed to determine if the index exists: [{}]. Trying to
recreate the index..", ExceptionUtils.getRootCauseMessage(e));
WDYT?
Thanks
-Vincent
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
--
Thomas Mortagne
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs