Packages
file_only_logger
0.2.63
0.2.70
0.2.69
0.2.65
0.2.64
0.2.63
0.2.62
0.2.61
0.2.60
0.2.59
0.2.58
0.2.57
0.2.56
0.2.55
0.2.54
0.2.53
0.2.52
0.2.51
0.2.50
0.2.49
0.2.48
0.2.47
0.2.45
0.2.44
0.2.43
0.2.42
0.2.41
0.2.40
0.2.39
0.2.38
0.2.37
0.2.36
0.2.35
0.2.34
0.2.33
0.2.31
0.2.30
0.2.29
0.2.28
0.2.27
0.2.26
0.2.25
0.2.24
0.2.23
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
0.2.17
0.2.16
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.1.58
0.1.57
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.50
0.1.49
0.1.47
0.1.46
0.1.45
0.1.44
0.1.43
0.1.42
0.1.41
0.1.40
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
0.1.31
0.1.30
0.1.28
0.1.27
0.1.26
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.0
A simple logger that writes messages to log files only (not to the console).
Current section
Files
Jump to
Current section
Files
lib/file/only/logger/config.ex
defmodule File.Only.Logger.Config do
use PersistConfig
alias File.Only.Logger.Log
@format get_env(:format)
@truncate_in_bytes get_env(:truncate_default_in_bytes)
@config get_env(:config)
@colors get_env(:colors)
@formatter Logger.Formatter.new(
format: @format,
# Prevents ANSI escape sequences in log files.
colors: [enabled: false],
truncate: @truncate_in_bytes
)
@default_formatter Logger.default_formatter(
format: @format,
colors: @colors,
truncate: @truncate_in_bytes
)
defmacro update_handler_config(handler_id) do
formatter = Macro.escape(@default_formatter)
quote bind_quoted: [id: handler_id, formatter: formatter] do
case :logger.update_handler_config(id, :formatter, formatter) do
:ok -> :ok
{:error, reason} -> :ok = Log.error(:upd_config, {reason, id, __ENV__})
end
end
end
defmacro add_handler(level) do
# Relative to wherever the BEAM (Erlang VM) was started...
path = ~c"./log/#{level}.log"
config = %{@config | file: path}
config = %{level: level, config: config, formatter: @formatter}
config = Macro.escape(config)
handler_id = :"#{level}_handler"
quote bind_quoted: [id: handler_id, config: config] do
case :logger.add_handler(id, :logger_std_h, config) do
:ok -> :ok
{:error, reason} -> :ok = Log.error(:add_handler, {reason, id, __ENV__})
end
end
end
defmacro standard_formatter?(handler_id) do
template = ["\n", :time, " ", :metadata, "[", :level, "] ", :message, "\n"]
quote bind_quoted: [handler_id: handler_id, template: template] do
case :logger.get_handler_config(handler_id) do
{:ok,
%{
formatter:
{Logger.Formatter,
%Logger.Formatter{template: template, colors: %{error: :red}}}
}} ->
true
_else ->
false
end
end
end
defmacro add_handlers(app) do
quote bind_quoted: [app: app] do
case Logger.add_handlers(app) do
:ok -> :ok
{:error, reason} -> :ok = Log.error(:handlers, {reason, app, __ENV__})
end
end
end
end