Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

config.rails_semantic_logger.ap_options only used in File Appender, not in IO Appender #167

Open
hidde-jan opened this issue Sep 22, 2022 · 0 comments
Labels

Comments

@hidde-jan
Copy link

Environment

Ruby: 3.1.2
Rails: 7.0.3.1
Semantic Logger: 4.11.0
Rails Semantic Logger: 4.10.0

Expected Behavior

Using the default behavior, SemanticLogger will add a File Appender and an IO appender. The ap_options to configure awesome print are only used to configure the File Appender:

ap_options = config.rails_semantic_logger.ap_options

I would expect ap_options to be used in the IO Appender, since it's more common people look at the logging in a terminal instead of tailing log/development.log

Actual Behavior

The ap_options are only used to configure the File Appender:

Config:

config.rails_semantic_logger.ap_options = { ruby19_syntax: true, multiline: true }

Semantic logger configuration:

SemanticLogger.appenders
=> 
[#<SemanticLogger::Appender::File:0x0000ffffa364dc98
  @append=true,
  @application=nil,
  @current_file_name="/workspace/log/development.log",
  @encoding=#<Encoding:ASCII-8BIT>,
  @environment=nil,
  @exclusive_lock=false,
  @file=#<File:/workspace/log/development.log>,
  @file_name="/workspace/log/development.log",
  @filter=nil,
  @formatter=
   #<SemanticLogger::Formatters::Color:0x0000ffffa364d8b0
    @ai_options={:ruby19_syntax=>true, :multiline=>true},
    @color="\e[32m",
    @color_map=
     #<SemanticLogger::Formatters::Color::ColorMap:0x0000ffffa364d810 @bold="\e[1m", @clear="\e[0m", @debug="\e[32m", @error="\e[31m", @fatal="\e[31m", @info="\e[36m", @trace="\e[35m", @warn="\e[1m">,
    @log=
     #<SemanticLogger::Log:0x0000ffffa3a25550
      @dimensions=nil,
      @duration=nil,
      @level=:debug,
      @level_index=1,
      @message="sentry -- [Sessions] Sessions won't be captured without a valid release",
      @metric=nil,
      @metric_amount=nil,
      @name="Rails",
      @named_tags={},
      @payload=nil,
      @tags=[],
      @thread_name="10980",
      @time=2022-09-22 07:40:00.907160804 +0000>,
    @log_application=true,
    @log_environment=true,
    @log_host=true,
    @logger=#<SemanticLogger::Appender::File:0x0000ffffa364dc98 ...>,
    @precision=6,
    @time_format="%Y-%m-%d %H:%M:%S.%6N">,
  @host=nil,
  @level=nil,
  @level_index=nil,
  @log_count=2,
  @log_size=270,
  @metrics=false,
  @name="SemanticLogger::Appender::File",
  @reopen_at=nil,
  @reopen_count=0,
  @reopen_period=nil,
  @reopen_size=0,
  @retry_count=1>,
 #<SemanticLogger::Appender::IO:0x0000ffffa46e58a8
  @application=nil,
  @environment=nil,
  @filter=nil,
  @formatter=
   #<SemanticLogger::Formatters::Color:0x0000ffffa46e5588
    @ai_options={:multiline=>false},
    @color_map=
     #<SemanticLogger::Formatters::Color::ColorMap:0x0000ffffa46e54c0 @bold="\e[1m", @clear="\e[0m", @debug="\e[32m", @error="\e[31m", @fatal="\e[31m", @info="\e[36m", @trace="\e[35m", @warn="\e[1m">,
    @log_application=true,
    @log_environment=true,
    @log_host=true,
    @precision=6,
    @time_format="%Y-%m-%d %H:%M:%S.%6N">,
  @host=nil,
  @io=#<IO:<STDERR>>,
  @level=nil,
  @level_index=nil,
  @metrics=false,
  @name="SemanticLogger::Appender::IO">]

Pull Request

My guess that that the IO is included by default in SemanticLogger, but I'm not very familiar with the source code. It seems IO Appenders are explicitly not reconfigured to use the updated formatter:

next unless app.is_a?(SemanticLogger::Appender::File) || app.is_a?(SemanticLogger::Appender::IO)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants