From 8aae4166da3cb9669a52098b1e7a9d94abcb9091 Mon Sep 17 00:00:00 2001 From: Chris Caragianis Date: Fri, 12 Oct 2018 14:03:44 -0400 Subject: [PATCH 1/3] pass through ex_jsx_opts --- lib/logger_logstash_backend.ex | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/lib/logger_logstash_backend.ex b/lib/logger_logstash_backend.ex index 905adaa..89f9061 100644 --- a/lib/logger_logstash_backend.ex +++ b/lib/logger_logstash_backend.ex @@ -56,7 +56,8 @@ defmodule LoggerLogstashBackend do port: port, type: type, metadata: metadata, - socket: socket + socket: socket, + ex_jsx_opts: ex_jsx_opts } ) do fields = md @@ -70,12 +71,15 @@ defmodule LoggerLogstashBackend do year, month, day, hour, minute, second, (milliseconds * 1000) ) ts = Timex.to_datetime ts, Timezone.local - {:ok, json} = JSX.encode %{ - type: type, - "@timestamp": Timex.format!(ts, "{ISO:Extended}"), - message: to_string(msg), - fields: fields - } + {:ok, json} = JSX.encode( + %{ + type: type, + "@timestamp": Timex.format!(ts, "{ISO:Extended}"), + message: to_string(msg), + fields: fields + }, + ex_jsx_opts + ) :gen_udp.send socket, host, port, to_charlist(json) end @@ -89,6 +93,7 @@ defmodule LoggerLogstashBackend do type = Keyword.get opts, :type, "elixir" host = Keyword.get opts, :host port = Keyword.get opts, :port + ex_jsx_opts = Keyword.get opts, :ex_jsx_opts, [] {:ok, socket} = :gen_udp.open 0 %{ name: name, @@ -97,7 +102,8 @@ defmodule LoggerLogstashBackend do level: level, socket: socket, type: type, - metadata: metadata + metadata: metadata, + ex_jsx_opts: ex_jsx_opts } end From c27a53f1fe1fbbff37858dc9bbc8a6dd02863762 Mon Sep 17 00:00:00 2001 From: Chris Caragianis Date: Fri, 12 Oct 2018 14:17:52 -0400 Subject: [PATCH 2/3] add test for passing uescape to ex_jsx --- test/logger_logstash_backend_test.exs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/test/logger_logstash_backend_test.exs b/test/logger_logstash_backend_test.exs index 20ea190..03a736f 100644 --- a/test/logger_logstash_backend_test.exs +++ b/test/logger_logstash_backend_test.exs @@ -89,6 +89,14 @@ defmodule LoggerLogstashBackendTest do :nothing_received = get_log() end + test "can pass ex_jsx_options" do + conf_with_uescape + Logger.info "µ", [pid_key: self()] + json = get_log() + {:ok, data} = JSX.decode json + assert data["message"] === "µ" + end + defp get_log do receive do {:udp, _, _, _, json} -> json @@ -101,4 +109,17 @@ defmodule LoggerLogstashBackendTest do Map.fetch!(map1, key) == value end) end + + defp conf_with_uescape do + Logger.configure_backend @backend, [ + host: "127.0.0.1", + port: 10001, + level: :info, + type: "some_app", + metadata: [ + some_metadata: "go here" + ], + ex_jsx_opts: [:uescape] + ] + end end From ae2f1990d3867d80187c9053fed1c92c2fdb2129 Mon Sep 17 00:00:00 2001 From: Chris Caragianis Date: Fri, 12 Oct 2018 14:21:59 -0400 Subject: [PATCH 3/3] update readme --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index ec55fd8..0675aa0 100644 --- a/README.md +++ b/README.md @@ -81,5 +81,8 @@ config :logger, :error_log, type: "my_type_of_app_or_node", metadata: [ extra_fields: "go here" + ], + ex_jsx_opts: [ + ] ```