Name |
Ceylon Logging Platform Module |
---|---|
Category |
SDK
The Ceylon SDK |
Backends | JVM JavaScript |
Maven coordinates | org.ceylon-lang:ceylon.logging |
Compatible Ceylon release |
JVM: 1.2.x, 1.3.x (latest) JavaScript: Unknown (10/0) |
Published | Aug 21, 2017 |
Stats |
Downloads (JVM): 2463 Downloads (JS): 200 Source downloads: 618 |
Description |
Defines a platform-neutral API for writing log messages. Important! By default, no log writer function is registered, and so nothing is logged. Read on to learn how to properly configure logging for your application Adding logging to your moduleLog messages are written to a Logger log = logger(`module hello`); The methods log.debug("trying to do something"); try { doSomething(); } catch (e) { log.error("something bad happened", e); } For log messages with interpolated expressions, these methods accept an anonymous function. log.debug(()=>"trying to do ``something``"); try { do(something); } catch (e) { log.error(()=>"badness happened doing ``something``", e); } Configuring logging for your applicationIf your module is going to be part of a larger application
then the above is the only thing you need to know to add
logging. But given the fact that this logging module does
not actually define any infrastructure for log message
output, your application must at some point during startup
register a addLogWriter(writeSimpleLog);
It's easy to customize the output by writing your own
log writer function. For example, we can
use import ceylon.logging { ... } import ceylon.time { now } import ceylon.locale { systemLocale } ... addLogWriter { void log(Priority p, Category c, String m, Throwable? t) { value print = p <= info then process.write else process.writeError; value instant = now(); value formats = systemLocale.formats; value date = formats.shortFormatDate(instant.date()); value time = formats.mediumFormatTime(instant.time()); print("[``date`` at ``time``] ``p.string``: ``m``"); print(operatingSystem.newline); if (exists t) { printStackTrace(t, print); } } }; Or, to log to a file, using import ceylon.logging { ... } import ceylon.file { ... } File file; switch (resource = parsePath("log.txt").resource) case (is ExistingResource) { assert (is File resource); file = resource; } case (is Nil) { file = resource.createFile(); } addLogWriter { void log(Priority p, Category c, String m, Throwable? t) { try (appender = file.Appender()) { appender.writeLine("[``system.milliseconds``] ``p.string``: ``m``"); if (exists t) { printStackTrace(t, appender.write); } } } }; By default, only log messages with priority at least
defaultPriority = debug; Alternatively, we can assign an explicit priority to a
specific logger(`module hello`).priority = debug; For integration with other logging libraries, it is
possible to completely replace the logger = (Category category) => JDKLoggerImpl(JDKLogger.getLogger(category.qualifiedName)); |
Dependencies | |
Usage |
import ceylon.logging "1.3.3"; |
Module links |
Members Imported By Home Code repository Issue tracker Browse Download .car Download .js Download source archive Download module documentation View API documentation |