Skip to content

Commit 04d4e94

Browse files
committed
Added Erlang demo.
1 parent 9c0827c commit 04d4e94

File tree

8 files changed

+78
-52
lines changed

8 files changed

+78
-52
lines changed

README.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,11 @@ Here is some example LFE usage:
122122
(log-info #m(some "structured" logging "examples" might "be useful too")))
123123
```
124124

125-
## Demo
125+
## Demos
126126

127127
``` bash
128-
$ rebar3 as examples demo
128+
$ rebar3 as examples lfe-demo
129+
$ rebar3 as examples erlang-demo
129130
```
130131

131132
## Test

examples/logjam-demo.lfe

+1-23
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,7 @@
55
(include-lib "logjam/include/logjam.hrl")
66

77
(defun run ()
8-
;; (io:format "~n*** Using the logger API ***~n~n")
9-
;; (logger:debug "This is a debug-level message")
10-
;; (logger:info "This is an info-level message")
11-
;; (logger:notice "This is a notice-level message")
12-
;; (logger:warning "This is a warning-level message")
13-
;; (logger:error "This is an error-level message")
14-
;; (logger:critical "This is a critical-level message")
15-
;; (logger:alert "This is an alert-level message")
16-
;; (logger:emergency "This is an emergency-level message")
17-
;; (logger:info #m(some "structured" logging "examples" might "be useful too"))
18-
19-
;; (io:format "~n*** Using the logjam API ***~n~n")
20-
;; (logjam:debug "This is a debug-level message")
21-
;; (logjam:info "This is an info-level message")
22-
;; (logjam:notice "This is a notice-level message")
23-
;; (logjam:warning "This is a warning-level message")
24-
;; (logjam:error "This is an error-level message")
25-
;; (logjam:critical "This is a critical-level message")
26-
;; (logjam:alert "This is an alert-level message")
27-
;; (logjam:emergency "This is an emergency-level message")
28-
;; (logjam:info #m(some "structured" logging "examples" might "be useful too"))
29-
30-
(io:format "~n*** Using logjam's macros ***~n~n")
8+
(io:format "~n*** Using logjam's macros from LFE ***~n~n")
319
(log-debug "This is a debug-level message")
3210
(log-info "This is an info-level message")
3311
(log-notice "This is a notice-level message")

examples/logjam_demo.erl

+1-15
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,10 @@
22

33
-export([run/0]).
44

5-
% -include_lib("kernel/include/logger.hrl").
6-
7-
% run() ->
8-
% ?'LOG_DEBUG'("This is a debug-level message"),
9-
% ?LOG_INFO("This is a info-level message"),
10-
% ?LOG_NOTICE("This is a notice-level message"),
11-
% ?LOG_WARNING("This is a warning-level message"),
12-
% ?LOG_ERROR("This is a error-level message"),
13-
% ?LOG_CRITICAL("This is a critical-level message"),
14-
% ?LOG_ALERT("This is a alert-level message"),
15-
% ?LOG_EMERGENCY("This is a emergency-level message"),
16-
% ?LOG_INFO(#{some => "structured",
17-
% logging => "examples",
18-
% might => "be useful too"}).
19-
205
-include_lib("logjam/include/logjam.hrl").
216

227
run() ->
8+
io:format("~n*** Using logjam's macros from Erlang ***~n~n"),
239
?'log-debug'("This is a debug-level message"),
2410
?'log-info'("This is a info-level message"),
2511
?'log-notice'("This is a notice-level message"),

rebar.config

+7-3
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
]},
3636
{eunit_opts, [verbose]},
3737
{erl_opts, [
38-
{src_dirs, ["src", "test"]}
38+
{src_dirs, ["src", "examples", "test"]}
3939
]}
4040
]},
4141
{examples, [
@@ -66,8 +66,12 @@
6666
coverage,
6767
edoc
6868
]},
69-
{demo, [
69+
{'lfe-demo', [
7070
compile,
71-
{lfe, 'run', "-m scripts/demo.lfe -- ./config/dev.config"}
71+
{lfe, 'run', "-m scripts/lfe-demo.lfe -- ./config/dev.config"}
72+
]},
73+
{'erlang-demo', [
74+
compile,
75+
{lfe, 'run', "-m scripts/erlang-demo.lfe -- ./config/dev.config"}
7276
]}
7377
]}.

rebar.lock

-8
This file was deleted.

scripts/erlang-demo.lfe

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#! /usr/bin/env lfescript
2+
3+
(include-lib "lfe/include/clj.lfe")
4+
5+
(defun main
6+
((`(,config-file))
7+
(timer:sleep 1000)
8+
(logger:set_primary_config #m(level all))
9+
(logjam:set-handler-from-config config-file)
10+
(timer:sleep 500)
11+
(logjam_demo:run)
12+
(timer:sleep 1000)
13+
(io:format "~n"))
14+
((args)
15+
(io:format "One arguement is required for the demo: the path to a config file.~n")
16+
(io:format "(Got ~p)~n" `(,args))))
File renamed without changes.

src/logjam.lfe

+50-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,14 @@
55
;;;; logger formatter regarding: max depth, templates.
66
(defmodule logjam
77
(export
8-
(format 2))
8+
(format 2)
9+
(read-config 1)
10+
(set-handler 1) (set-handler 2)
11+
(set-handler-from-config 1) (set-handler-from-config 2)
12+
;; Aliases for Erlang users:
13+
(read_config 1)
14+
(set_handler 1) (set_handler 2)
15+
(set_handler_from_config 1) (set_handler_from_config 2))
916
(export-macro
1017
log debug info notice warn warning error critical alert emergency))
1118

@@ -42,6 +49,48 @@
4249
'msg `#(report #m(text ,(logjam_formatter:format_to_binary format terms))))
4350
user-config)))
4451

52+
(defun read-config (config-file)
53+
"Read a standard release-style system config file.
54+
55+
Essentially wraps file:consult/1."
56+
(let ((`#(ok (,cfg)) (file:consult config-file)))
57+
cfg))
58+
59+
(defun set-handler-from-config (config-file)
60+
(set-handler (read-config config-file)))
61+
62+
(defun set-handler-from-config (config-file name)
63+
(set-handler name (read-config config-file)))
64+
65+
(defun set-handler (config-data)
66+
(set-handler config-data 'default))
67+
68+
(defun set-handler (config-data name)
69+
(logger:set_handler_config
70+
name
71+
(clj:->> config-data
72+
(proplists:get_value 'kernel)
73+
(proplists:get_value 'logger)
74+
(car)
75+
(element 4))))
76+
77+
;; Aliases for Erlang users
78+
79+
(defun read_config (config-file)
80+
(read-config config-file))
81+
82+
(defun set_handler_from_config (config-file)
83+
(set-handler-from-config config-file))
84+
85+
(defun set_handler_from_config (config-file name)
86+
(set-handler-from-config config-file name))
87+
88+
(defun set_handler (config-file)
89+
(set-handler config-file))
90+
91+
(defun set_handler (config-file name)
92+
(set-handler config-file name))
93+
4594
;;;==========================================================================
4695
;;; API macros
4796
;;;==========================================================================

0 commit comments

Comments
 (0)