diff --git a/src/logger.cr b/src/logger.cr index 380b5ad..29ed373 100644 --- a/src/logger.cr +++ b/src/logger.cr @@ -32,33 +32,34 @@ module Logger {% args = @def.args.reject{|a| exclude.includes?(a.name)} %} {% unless args.empty? %} Log.with_context( {% for arg in args %} {{arg.name}}: {{arg.name}}, {% end %} ) do - Log.{{level}} { [ generate_log_line, {{message}}].join(" : ") } + Log.{{level}} { generate_log_line {{message}} } end {% else %} - Log.{{level}} { [ generate_log_line, {{message}}].join(" : ") } + Log.{{level}} { generate_log_line {{message}} } {% end %} {% elsif @type %} - {% if @type.class? && @type.class != Metaclass %} - {% if vars = @type.instance_vars.select(&.annotation(LogContext)) %} + {% if @type.class? %} + {% class_def = @type.methods.includes?(@def) %} + {% if (vars = @type.instance_vars.select(&.annotation(LogContext))) && class_def %} Log.with_context( {% for var in vars %} {{var.name}}: @{{var.name}}, {% end %} ) do - Log.{{level}} { [ generate_log_line, {{message}}].join(" : ") } + Log.{{level}} { generate_log_line {{message}} } end {% else %} - Log.{{level}} { [ generate_log_line, {{message}}].join(" : ") } + Log.{{level}} { generate_log_line {{message}} } {% end %} {% elsif @type.module? %} - Log.{{level}} { [generate_log_line, {{message}}].join(" : ") } + Log.{{level}} { generate_log_line {{message}} } {% end %} {% else %} - Log.{{level}} { [ generate_log_line, {{message}}].join(" : ") } + Log.{{level}} { generate_log_line {{message}} } {% end %} end - macro generate_log_line - {% verbatim do %} - {% if @def %} - "Method({{@def.name}})" - {% end %} + macro generate_log_line(message) + {% if @def %} + [ "Method({{@def.name}})", {{message}}].join(" : ") + {% else %} + {{message}} {% end %} end