2017-10-25 128 views
5

Odziedziczyłem średniej wielkości aplikację Railsową z mnóstwem różnych metod logowania rozproszonych w całym kodzie. To trochę bałaganu i jestem zgubiony, dlaczego niektóre dzienniki są wyprowadzane i dlaczego niektórzy nie.logi debugowania szyn logów

Czy istnieje sposób, aby rejestratory "ogłaszały się"/logowały niektóre informacje o stanie podczas tworzenia? W podobny sposób do tego, co logback does kiedy ustawiony debug="true"

SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/Users/aleksander.sumowski/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/Users/aleksander.sumowski/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
11:28:33,076 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 
11:28:33,076 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy] 
11:28:33,076 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/Users/aleksander.sumowski/projects/insurance/car-insurance-aggregator/resources/logback.xml] 
11:28:33,168 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Will scan for changes in [file:/Users/aleksander.sumowski/projects/insurance/car-insurance-aggregator/resources/logback.xml] 
11:28:33,168 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeTask scanning period to 1 seconds 
11:28:33,172 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 
11:28:33,175 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT] 
11:28:33,179 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 
11:28:33,214 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender] 
11:28:33,218 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [FILE] 
11:28:33,225 |-INFO in [email protected] - Will use gz compression 
11:28:33,228 |-INFO in [email protected] - Will use the pattern log/archive/car-insurance-aggregator.%d{yyyy-MM-dd}.log for the active file 
11:28:33,231 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'log/archive/car-insurance-aggregator.%d{yyyy-MM-dd}.log.gz'. 
11:28:33,231 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight. 
11:28:33,234 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Wed Nov 22 11:28:33 UTC 2017 
11:28:33,235 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 
11:28:33,236 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Active log file name: log/car-insurance-aggregator.log 
11:28:33,236 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - File property is set to [log/car-insurance-aggregator.log] 
11:28:33,238 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [business_events] to INFO 
11:28:33,238 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [FILE] to Logger[business_events] 
11:28:33,238 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO 
11:28:33,238 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT] 
11:28:33,238 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration. 
11:28:33,239 |-INFO in [email protected] - Registering current configuration as safe fallback point 
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder] 
2017-11-22 11:28:34,266 [main] INFO org.eclipse.jetty.util.log - Logging initialized @3093ms 
+0

Być może szukasz poziomów logowania? http://guides.rubyonrails.org/debugging_rails_applications.html#log-levels – HarlemSquirrel

+0

Jestem zaznajomiony z koncepcją poziomów logów i to nie jest to, czego szukam. – sumek

+0

Czy możesz podzielić się tym, które rejestratory są w aplikacji? – HarlemSquirrel

Odpowiedz

1

Tak, to jest piękno i ból z rubinem. Zacznę od nadpisania metody Rails.logger= w config/application.rb z niektórymi (jak mówisz) "ogłosić".

Wystarczy dodać do config/application.rb coś takiego i oglądać dzienniki:

Rails.singleton_class.send('alias_method', :old_logger=, :logger=) 
module Rails 
    def self.logger=(value) 
    puts "Hey logger '#{value.inspect}' starting!" 
    self.old_logger = value 
    end 
end 

albo co o właśnie badają wartości Rails.logger?

+0

To bardzo blisko tego, czego potrzebuję! Kolejne dwa pytania uzupełniające: czy istnieje sposób na określenie, kto/gdzie jest wykonywane zadanie? Myślałem o drukowaniu stosu połączeń w jakiś sposób. Druga część: wydaje mi się, że niektóre rejestrowania są dokonywane przez Rack, a nie Rails. Czy podobna metoda zadziałałaby również w przypadku Racków? – sumek

0

nie wiem, czy to jest to, czego szukasz, ale Rails posiada 5 różnych poziomów log (http://guides.rubyonrails.org/debugging_rails_applications.html):

2.2 Log Levels 

Kiedy coś jest rejestrowane, jest drukowane w odpowiednim dzienniku, jeśli poziom dziennika komunikatu jest równy lub wyższy niż skonfigurowany poziom rejestrowania. Jeśli chcesz poznać bieżący poziom dziennika, możesz wywołać metodę Rails.logger.level.

Dostępne poziomy rejestrów to:: debug,: info,: warn,: error,: fatal, i: unknown, odpowiadające numerom poziomów dziennika od 0 do 5, odpowiednio. Aby zmienić domyślny poziom dziennika, użyj

config.log_level =: ostrzec

+0

Nie, to nie jest to, czego szukam ... Aplikacja ma wiele rejestratorów zdefiniowanych w różnych miejscach. Również regał sam się loguje. Chciałbym mieć widoczność tych rejestratorów. – sumek