Skip to content

Commit

Permalink
Log4CL integration.
Browse files Browse the repository at this point in the history
  • Loading branch information
fukamachi committed May 16, 2017
1 parent 4acf615 commit 39a2b52
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
14 changes: 14 additions & 0 deletions README.markdown
Expand Up @@ -5,6 +5,8 @@ A Common Lisp structured logger for Fluentd.
## Usage

```common-lisp
(ql:quickload :cl-fluent-logger)
(defvar *logger*
(make-instance 'fluent-logger:fluent-logger))
Expand All @@ -19,6 +21,18 @@ A Common Lisp structured logger for Fluentd.
'(("from" . "userA") ("to" . "userB")))
```

### Log4CL Integration

```common-lisp
(ql:quickload :cl-fluent-logger/log4cl)
(defvar *logger* (log:category '(cl-user)))
(fluent-logger/log4cl:create-fluent-logger *logger* :tag "debug" :level :info)
(log:info "hi")
;-> <INFO> [17:03:33] (cl-user) - hi
```

## Author

* Eitaro Fukamachi (e.arrows@gmail.com)
Expand Down
38 changes: 38 additions & 0 deletions log4cl.lisp
@@ -0,0 +1,38 @@
(defpackage #:cl-fluent-logger/log4cl
(:nicknames :fluent-logger/log4cl)
(:use #:cl)
(:import-from #:cl-fluent-logger
#:fluent-logger
#:send)
(:import-from #:log4cl)
(:export #:fluent-appender
#:create-fluent-logger))
(in-package #:cl-fluent-logger/log4cl)

(defclass fluent-appender (log4cl:appender)
((logger :accessor fluent-appender-logger
:initarg :logger
:initform nil)))

(defmethod initialize-instance :after ((appender fluent-appender) &rest initargs)
(unless (fluent-appender-logger appender)
(setf (fluent-appender-logger appender)
(apply #'make-instance 'fluent-logger :allow-other-keys t initargs))))

(defmethod log4cl:appender-do-append ((appender fluent-appender) logger level log-func)
(declare (ignore logger))
(send (fluent-appender-logger appender)
(string-downcase (log4cl:log-level-to-string level))
(with-output-to-string (s) (funcall log-func s))))

(defun create-fluent-logger (logger &rest initargs
&key tag host port buffer-limit timeout nanosecond-precision
level)
(declare (ignore tag host port buffer-limit timeout nanosecond-precision))
(log:config logger level)
(let* ((fluent-logger (apply #'make-instance 'fluent-logger
:allow-other-keys t
initargs))
(appender (make-instance 'fluent-appender :logger fluent-logger)))
(log4cl:add-appender logger appender)
logger))

0 comments on commit 39a2b52

Please sign in to comment.