Skip to content

Commit

Permalink
Log messages sent to logstash must end with newline
Browse files Browse the repository at this point in the history
  • Loading branch information
svetob committed Aug 18, 2016
1 parent dc063ea commit 2a6bd80
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 7 deletions.
2 changes: 1 addition & 1 deletion lib/logstash_json_tcp.ex
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ defmodule LogstashJson.TCP do
end

defp send_log(log, %{conn: conn} = state) do
case TCP.Connection.send(conn, log) do
case TCP.Connection.send(conn, log <> "\n") do
:ok ->
{:noreply, state}
{:error, :closed} ->
Expand Down
31 changes: 25 additions & 6 deletions test/logstash_json_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,38 @@ defmodule LogstashJsonTest do
doctest LogstashJson.TCP

test "Happy case" do
listener = new_listener()

Logger.info "Hello world!"

msg = recv_and_close(listener)
log = Poison.decode!(msg)
assert Map.get(log, "message") == "Hello world!"
assert Map.get(log, "level") == "info"
end

test "TCP log messages end with newline" do
listener = new_listener()

Logger.info "Hello world!"

msg = recv_and_close(listener)
assert msg |> String.ends_with?("\n")
end

defp new_listener() do
{:ok, listener} = :gen_tcp.listen 0, [:binary, {:active, false}, {:packet, 0}, {:reuseaddr, true}]
{:ok, port} = :inet.port listener
Logger.configure_backend {LogstashJson.TCP, :logstash}, port: port
listener
end

Logger.info "Hello world!"

defp recv_and_close(listener) do
{:ok, socket} = :gen_tcp.accept(listener, 1000)
{:ok, msg} = :gen_tcp.recv(socket, 0, 1000)
:ok = :gen_tcp.close socket
:ok = :gen_tcp.close listener

log = Poison.decode!(msg)
assert Map.get(log, "message") == "Hello world!"
assert Map.get(log, "level") == "info"
msg
end

end

0 comments on commit 2a6bd80

Please sign in to comment.