[
    {erlmcp, [
        %% Logging configuration
        {log_level, info},
        
        %% Client defaults
        {client_defaults, #{
            timeout => 5000,
            strict_mode => false,
            max_pending_requests => 100
        }},
        
        %% Server defaults
        {server_defaults, #{
            max_subscriptions_per_resource => 1000,
            max_progress_tokens => 10000
        }},
        
        %% Transport settings
        {transport_defaults, #{
            tcp => #{
                connect_timeout => 5000,
                keepalive => true,
                nodelay => true
            },
            http => #{
                connect_timeout => 5000,
                request_timeout => 30000,
                max_connections => 100
            }
        }}
    ]},
    
    {kernel, [
        %% Use the new logger (OTP 21+)
        {logger_level, info},
        {logger, [
            {handler, default, logger_std_h, #{
                config => #{
                    type => standard_io,
                    sync_mode_qlen => 100,
                    drop_mode_qlen => 1000,
                    flush_qlen => 2000
                },
                formatter => {logger_formatter, #{
                    %% Better format for debugging
                    template => [time, " [", level, "] ", pid, " ", mfa, ":", line, " ", msg, "\n"],
                    %% ISO 8601 timestamps
                    time_offset => "",
                    time_designator => $T,
                    %% Include metadata
                    single_line => false,
                    max_size => 4096
                }},
                filters => [
                    %% Filter out debug messages in production
                    {progress_reports, {fun logger_filters:progress/2, stop}},
                    {sasl_reports, {fun logger_filters:domain/2, {stop, sub, [otp, sasl]}}}
                ],
                %% Log level per handler
                level => info
            }},
            %% Add file handler for persistent logs
            {handler, file_log, logger_std_h, #{
                config => #{
                    file => "logs/erlmcp.log",
                    max_no_bytes => 10485760,  %% 10 MB
                    max_no_files => 5,
                    compress_on_rotate => true
                },
                formatter => {logger_formatter, #{
                    template => [time, " [", level, "] ", pid, " ", mfa, ":", line, " ", msg, "\n"]
                }},
                level => debug
            }}
        ]}
    ]},
    
    %% SASL configuration for better error reports
    {sasl, [
        {sasl_error_logger, false},  %% Use kernel logger instead
        {errlog_type, error},
        {error_logger_format_depth, 20}
    ]}
].