@ -33,7 +33,7 @@
- export ( [ format_reason / 1 , format_mfa / 1 , format_args / 3 ] ) .
- export ( [ format_reason / 1 , format_mfa / 1 , format_args / 3 ] ) .
- record ( state , {
- record ( state , {
sink : : atom ( ) ,
sink : : atom ( ) ,
shaper : : lager_shaper ( ) ,
shaper : : lager_shaper ( ) ,
% % group leader strategy
% % group leader strategy
@ -88,8 +88,8 @@ handle_event(Event, #state{sink=Sink, shaper=Shaper} = State) ->
{ true , 0 , NewShaper } - >
{ true , 0 , NewShaper } - >
eval_gl ( Event , State #state { shaper = NewShaper } ) ;
eval_gl ( Event , State #state { shaper = NewShaper } ) ;
{ true , Drop , #lager_shaper { hwm = Hwm } = NewShaper } when Drop > 0 - >
{ true , Drop , #lager_shaper { hwm = Hwm } = NewShaper } when Drop > 0 - >
? LOGFMT ( Sink , warning , self ( ) ,
" lager_error_logger_h dropped ~p messages in the last second that exceeded the limit of ~p messages/sec " ,
? LOGFMT ( Sink , warning , self ( ) ,
" lager_error_logger_h dropped ~p messages in the last second that exceeded the limit of ~p messages/sec " ,
[ Drop , Hwm ] ) ,
[ Drop , Hwm ] ) ,
eval_gl ( Event , State #state { shaper = NewShaper } ) ;
eval_gl ( Event , State #state { shaper = NewShaper } ) ;
{ false , _ , NewShaper } - >
{ false , _ , NewShaper } - >
@ -106,9 +106,9 @@ terminate(_Reason, _State) ->
code_change ( _ OldVsn , { state , Shaper , GLStrategy } , _ Extra ) - >
code_change ( _ OldVsn , { state , Shaper , GLStrategy } , _ Extra ) - >
Raw = lager_app : get_env ( lager , error_logger_format_raw , false ) ,
Raw = lager_app : get_env ( lager , error_logger_format_raw , false ) ,
{ ok , #state {
{ ok , #state {
sink = configured_sink ( ) ,
shaper = Shaper ,
groupleader_strategy = GLStrategy ,
sink = configured_sink ( ) ,
shaper = Shaper ,
groupleader_strategy = GLStrategy ,
raw = Raw
raw = Raw
} } ;
} } ;
code_change ( _ OldVsn , { state , Sink , Shaper , GLS } , _ Extra ) - >
code_change ( _ OldVsn , { state , Sink , Shaper , GLS } , _ Extra ) - >
@ -152,12 +152,18 @@ log_event(Event, #state{sink=Sink} = State) ->
? LOGFMT ( Sink , error , [ { pid , Pid } , { name , Name } | Md ] , " gen_server ~w terminated with reason: ~s " ,
? LOGFMT ( Sink , error , [ { pid , Pid } , { name , Name } | Md ] , " gen_server ~w terminated with reason: ~s " ,
[ Name , Formatted ] ) ;
[ Name , Formatted ] ) ;
{ false , " ** State machine " ++ _ } - >
{ false , " ** State machine " ++ _ } - >
% % gen_fsm terminate
[ Name , _ Msg , StateName , _ StateData , Reason ] = Args ,
% % Check if the terminated process is gen_fsm or gen_statem
% % since they generate the same exit message
{ Type , Name , StateName , Reason } = case Args of
[ TName , _ Msg , TStateName , _ StateData , TReason ] - >
{ gen_fsm , TName , TStateName , TReason } ;
[ TName , _ Msg , { TStateName , _ StateData } , _ ExitType , TReason , _ FsmType , Stacktrace ] - >
{ gen_statem , TName , TStateName , { TReason , Stacktrace } }
end ,
{ Md , Formatted } = format_reason_md ( Reason ) ,
{ Md , Formatted } = format_reason_md ( Reason ) ,
? CRASH_LOG ( Event ) ,
? CRASH_LOG ( Event ) ,
? LOGFMT ( Sink , error , [ { pid , Pid } , { name , Name } | Md ] , " gen_fsm ~w in state ~w terminated with reason: ~s " ,
[ Name , StateName , Formatted ] ) ;
? LOGFMT ( Sink , error , [ { pid , Pid } , { name , Name } | Md ] , " ~s ~w in state ~w terminated with reason: ~s " ,
[ Type , Name, StateName , Formatted ] ) ;
{ false , " ** gen_event handler " ++ _ } - >
{ false , " ** gen_event handler " ++ _ } - >
% % gen_event handler terminate
% % gen_event handler terminate
[ ID , Name , _ Msg , _ State , Reason ] = Args ,
[ ID , Name , _ Msg , _ State , Reason ] = Args ,