h$       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg h i j k l m n o p q r s t uv w x y z { | } ~    Safe-Inferred #$<? 01:23456789;< 01:23456789;<None #$<~  =>?@A = >?@ANone #$<=DEFGHIJKLMNOPQRSTUVWXYZ[\]^_O=KLMNHIJDEFGPQRSTUVWXYZ[\]^_None #$<`a`aNone #$<B -,+*)('&%bcde b-,+*)('&%cdeNone #$<  None #$<ff None #$<MpBlammo Create a i7 that will capture log messages instead of logging themSee Blammo.Logging.LoggedMessages for more details.qBlammoReturn the logged messages if p was used#If not, the empty list is returned.rBlammoq+ but ignore any messages that fail to parsesBlammoq but  if any messages failed to parse-,+*)('&%ghijklmnopqrsighoklmnp-,+*)('&%qrsjNone #$<4   !"#$/.DEFGHIJKLMNOTUVWXghiou4O KLMNHIJDEFGTUVWXighou/. $#"!  None #$<vBlammo Construct a i% configured via environment variableswBlammo Construct a i0 configured via environment variables and use it6   !"#$/.DGEFHIJKNLMOTUVWXghiouvwvw None #$< DyBlammoAdd context to any logging done from the request-handling threadzBlammoy, but have the  available{Blammo8Log requests (more accurately, responses) as they happen*In JSON format, logged messages look like: ${ ... message: { text: "GET foo*bar => 200 OK", meta: { method: GET, path: "foobar", query: "?baz=bat&quix=quo", status: { code: 200, message: OK }, durationMs: 1322.2, requestHeaders: { Authorization: "***", Accept: "text/html", Cookie: "***" }, responseHeaders: { Set-Cookie: "***", Expires: "never" } } } } }Blammo'Change the source used for log messages Default is  requestLogger.~BlammoChange how the clientIp field is determined)Default is looking up the first value in x-forwarded-for , then the  x-real-ip& header, then finally falling back to .BlammoChange how the  destinationIp field is determinedDefault is looking up the  x-real-ip header.NOTE2: Our default uses a somewhat loose definition of  destination. It would be more accurate to report the resolved IP address of the Host; header, but we don't have that available. Our default of  x-real-ip favors containerized Warp on AWS/ECS, where this value holds the ECS target container's IP address. This is valuable debugging information and could, if you squint, be considered a  destination. xyz{|}~ yz{x|}~  Safe-Inferred #$<              !"#$"#%"#&"#'"#("#)"#*"#+"#,"#-"#."#/01201301401501601701801901:01;01<01=0>?0>@0>A0>B0>C0>D0>E0>F0>F0>G0>HIIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgWhijklmnopqrsXtuvwxyz{| } ~         {                      %Blammo-1.0.2.3-8zLgAHADjOA4CmW62VFgdEBlammo.LoggingData.Aeson.Compat$Blammo.Logging.LogSettings.LogLevelsBlammo.Logging.TestBlammo.Logging.ColorsBlammo.Logging.LogSettingsBlammo.Logging.LogSettings.EnvBlammo.Logging.TerminalBlammo.Logging.LoggerBlammo.Logging.SimpleNetwork.Wai.Middleware.Logging Paths_Blammo$aeson-2.1.0.0-GgjidZZQSynIgq9Mjgy5MFData.Aeson.Types.ToJSON.=Data.Aeson.Encoding.InternalSeriesData.Aeson.Types.InternalPairData.Aeson.KeyMaptoListfromList singletonnullemptyKeyMapData.Aeson.KeytoTextfromTextKeyexceptions-0.10.4Control.Monad.Catch MonadMask*monad-logger-0.3.36-H5zYEzBAZGhDkpMBZIJRQBControl.Monad.Logger LevelOther LevelError LevelWarn LevelInfo LevelDebugLogLevel LogSourcemonadLoggerLog MonadLogger askLoggerIO MonadLoggerIOLoggingT1monad-logger-aeson-0.3.1.0-JTpy9a1oWGNKyAMakYLHOZControl.Monad.Logger.AesonmyThreadContextwithThreadContext logOtherNS logErrorNS logWarnNS logInfoNS logDebugNSlogOtherlogErrorlogWarnlogInfologDebug#Control.Monad.Logger.Aeson.InternalloggedMessageMetaloggedMessageTextloggedMessageThreadContextloggedMessageLogSourceloggedMessageLocloggedMessageLevelloggedMessageTimestamp LoggedMessage:#MessageColorsgrayblackcyanmagentablueyellowgreenredbolddim getColors LogLevels newLogLevels readLogLevelsshouldLogLeveldefaultLogLevels $fEqLogLevels$fShowLogLevelsLogColor LogColorAutoLogColorAlways LogColorNever LogFormat LogFormatJSONLogFormatTerminalLogDestinationLogDestinationStdoutLogDestinationStderrLogDestinationFile LogSettingsreadLogDestination readLogFormat readLogColordefaultLogSettingssetLogSettingsLevelssetLogSettingsDestinationsetLogSettingsFormatsetLogSettingsColorgetLogSettingsLevelsgetLogSettingsDestinationgetLogSettingsFormatgetLogSettingsColorshouldColorAutoshouldColorHandleparseparserLoggedMessagesnewLoggedMessages appendLogStrgetLoggedMessagesreformatTerminal HasLoggerloggerLLoggergetLoggerLoggerSetgetLoggerReformatgetLoggerShouldLog pushLogStrLn flushLogStr newLogger newTestLoggergetLoggedMessagesLenientgetLoggedMessagesUnsafe$fHasLoggerLoggerrunLoggerLoggingT newLoggerEnvrunSimpleLoggingTConfigaddThreadContextaddThreadContextFromRequest requestLogger defaultConfigsetConfigLogSourcesetConfigGetClientIpsetConfigGetDestinationIprequestLoggerWith(unliftio-0.2.22.0-8XX2qytUiYHJDqmPuk7olCUnliftIO.Exception throwString wai-3.2.3-BLrwfdFdeMQ1KnKjrnSyUlNetwork.Wai.InternalRequest remoteHostversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName