diff --git a/hp.asd b/hp.asd index 4b5d019..da3b510 100644 --- a/hp.asd +++ b/hp.asd @@ -8,3 +8,4 @@ :in-order-to ((test-op (test-op "hp-tests")))) (register-system-packages "lack-middleware-static" '(:lack.middleware.static)) +(register-system-packages "lack-middleware-accesslog" '(:lack.middleware.accesslog)) diff --git a/qlfile b/qlfile index b5ae7d4..ff47156 100644 --- a/qlfile +++ b/qlfile @@ -4,3 +4,4 @@ ql cl-jingle git piccolo https://github.com/skyizwhite/piccolo.git git ningle-fbr https://github.com/skyizwhite/ningle-fbr.git ql cl-ppcre +ql log4cl diff --git a/qlfile.lock b/qlfile.lock index 949a250..1930ef4 100644 --- a/qlfile.lock +++ b/qlfile.lock @@ -26,3 +26,7 @@ (:class qlot/source/ql:source-ql :initargs (:%version :latest) :version "ql-2023-10-21")) +("log4cl" . + (:class qlot/source/ql:source-ql + :initargs (:%version :latest) + :version "ql-2023-10-21")) diff --git a/src/app.lisp b/src/app.lisp index c34f727..76963cf 100644 --- a/src/app.lisp +++ b/src/app.lisp @@ -32,8 +32,9 @@ :directory "src/routes") (jg:static-path *app* "/assets/" "src/assets/") (jg:install-middleware *app* mw:*public-files*) + (jg:install-middleware *app* mw:*recovery*) (jg:install-middleware *app* mw:*normalize-path*) - (jg:install-middleware *app* mw:*recovery*)) + (jg:install-middleware *app* mw:*accesslog*)) (defun update () (stop) diff --git a/src/middlewares/accesslog.lisp b/src/middlewares/accesslog.lisp new file mode 100644 index 0000000..0ec8ac2 --- /dev/null +++ b/src/middlewares/accesslog.lisp @@ -0,0 +1,14 @@ +(defpackage #:hp/middlewares/accesslog + (:use #:cl) + (:import-from #:lack.middleware.accesslog + #:*lack-middleware-accesslog*) + (:import-from #:log4cl) + (:export *accesslog*)) +(in-package #:hp/middlewares/accesslog) + +(defparameter *accesslog* + (lambda (app) + (funcall *lack-middleware-accesslog* + app + :logger (lambda (message) + (log:info message))))) diff --git a/src/middlewares/recovery.lisp b/src/middlewares/recovery.lisp index 91f9214..0f15496 100644 --- a/src/middlewares/recovery.lisp +++ b/src/middlewares/recovery.lisp @@ -1,15 +1,15 @@ (defpackage #:hp/middlewares/recovery (:use #:cl) + (:import-from #:log4cl) (:export #:*recovery*)) (in-package #:hp/middlewares/recovery) -;;; TODO: insert logger - (defparameter *recovery* (lambda (app) (lambda (env) (handler-case (funcall app env) (error (c) + (log:error "Unhandled error caught: ~a" c) `(500 (:content-type "text/plain") - (,(format nil "Internal Server Error: ~a~%" c)))))))) + ("Internal Server Error")))))))