Skip to content

Commit

Permalink
Convert to binary while still on client
Browse files Browse the repository at this point in the history
  • Loading branch information
José Valim committed May 30, 2016
1 parent 13983bb commit fb6eafe
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 10 deletions.
11 changes: 9 additions & 2 deletions lib/logger/lib/logger.ex
Original file line number Diff line number Diff line change
Expand Up @@ -476,9 +476,16 @@ defmodule Logger do
level: min_level, utc_log: utc_log?} = Logger.Config.__data__

if compare_levels(level, min_level) != :lt do
truncated = truncate(chardata_or_fn, truncate)
metadata = [pid: self()] ++ Keyword.merge(pdict, metadata)
tuple = {Logger, truncate(chardata_or_fn, truncate),
Logger.Utils.timestamp(utc_log?), metadata}
message =
case :unicode.characters_to_binary(truncated) do
{_, good, bad} -> [good | Logger.Formatter.prune(bad)]
good -> good
end

tuple = {Logger, message, Logger.Utils.timestamp(utc_log?), metadata}

try do
notify(mode, {level, Process.group_leader(), tuple})
:ok
Expand Down
9 changes: 1 addition & 8 deletions lib/logger/lib/logger/backends/console.ex
Original file line number Diff line number Diff line change
Expand Up @@ -76,14 +76,7 @@ defmodule Logger.Backends.Console do
output =
format_event(level, msg, ts, md, state)
|> color_event(level, colors)
case :unicode.characters_to_binary(output) do
{:incomplete, good, bad} ->
send(device, {:io_request, self(), self(), {:put_chars, :unicode, [good | Logger.Formatter.prune(bad)]}})
{:error, good, bad} ->
send(device, {:io_request, self(), self(), {:put_chars, :unicode, [good | Logger.Formatter.prune(bad)]}})
good ->
send(device, {:io_request, self(), self(), {:put_chars, :unicode, good}})
end
send(device, {:io_request, self(), self(), {:put_chars, :unicode, output}})
end

defp format_event(level, msg, ts, md, %{format: format, metadata: keys}) do
Expand Down
6 changes: 6 additions & 0 deletions lib/logger/test/logger_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,12 @@ defmodule LoggerTest do
end
end

test "log/2 prunes bad unicode chars" do
assert capture_log(fn ->
assert Logger.log(:debug, "he" <> <<185>> <> "lo") == :ok
end) =~ "he�lo"
end

test "log/2 relies on sync_threshold" do
Logger.remove_backend(:console)
Logger.configure(sync_threshold: 0)
Expand Down

0 comments on commit fb6eafe

Please sign in to comment.