Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Logger
The Logger is an configurable entity that is used by the compiler to output messages on the console (stdout, stderr) and in dump files.
The behaviour of default Logger returned by initLogger
can be modified with
hooks. The compiler itself uses hooks in multithreaded code (--make) and it
is also probably used by ghc-api users (IDEs, etc.).
In addition to hooks, the Logger suppors LogFlags: basically a subset of the command-line flags that control the logger behaviour at a higher level than hooks.
- Hooks are used to define how to generate a infowarningerror/dump messages
- LogFlags are used to decide when and how to generate messages
Synopsis
- data Logger
- class HasLogger m where
- class ContainsLogger t where
- extractLogger :: t -> Logger
- initLogger :: IO Logger
- type LogAction = LogFlags -> MessageClass -> SrcSpan -> SDoc -> IO ()
- type DumpAction = LogFlags -> PprStyle -> DumpFlag -> String -> DumpFormat -> SDoc -> IO ()
- type TraceAction a = LogFlags -> String -> SDoc -> a -> a
- data DumpFormat
- popLogHook :: Logger -> Logger
- pushLogHook :: (LogAction -> LogAction) -> Logger -> Logger
- popDumpHook :: Logger -> Logger
- pushDumpHook :: (DumpAction -> DumpAction) -> Logger -> Logger
- popTraceHook :: Logger -> Logger
- pushTraceHook :: (forall a. TraceAction a -> TraceAction a) -> Logger -> Logger
- makeThreadSafe :: Logger -> IO Logger
- data LogFlags = LogFlags {
- log_default_user_context :: SDocContext
- log_default_dump_context :: SDocContext
- log_dump_flags :: !(EnumSet DumpFlag)
- log_show_caret :: !Bool
- log_show_warn_groups :: !Bool
- log_enable_timestamps :: !Bool
- log_dump_to_file :: !Bool
- log_dump_dir :: !(Maybe FilePath)
- log_dump_prefix :: !FilePath
- log_dump_prefix_override :: !(Maybe FilePath)
- log_enable_debug :: !Bool
- log_verbosity :: !Int
- defaultLogFlags :: LogFlags
- log_dopt :: DumpFlag -> LogFlags -> Bool
- log_set_dopt :: DumpFlag -> LogFlags -> LogFlags
- setLogFlags :: Logger -> LogFlags -> Logger
- updateLogFlags :: Logger -> (LogFlags -> LogFlags) -> Logger
- logFlags :: Logger -> LogFlags
- logHasDumpFlag :: Logger -> DumpFlag -> Bool
- logVerbAtLeast :: Logger -> Int -> Bool
- jsonLogAction :: LogAction
- putLogMsg :: Logger -> LogAction
- defaultLogAction :: LogAction
- defaultLogActionHPrintDoc :: LogFlags -> Bool -> Handle -> SDoc -> IO ()
- defaultLogActionHPutStrDoc :: LogFlags -> Bool -> Handle -> SDoc -> IO ()
- logMsg :: Logger -> MessageClass -> SrcSpan -> SDoc -> IO ()
- logDumpMsg :: Logger -> String -> SDoc -> IO ()
- defaultDumpAction :: DumpCache -> LogAction -> DumpAction
- putDumpFile :: Logger -> DumpAction
- putDumpFileMaybe :: Logger -> DumpFlag -> String -> DumpFormat -> SDoc -> IO ()
- putDumpFileMaybe' :: Logger -> PrintUnqualified -> DumpFlag -> String -> DumpFormat -> SDoc -> IO ()
- withDumpFileHandle :: DumpCache -> LogFlags -> DumpFlag -> (Maybe Handle -> IO ()) -> IO ()
- touchDumpFile :: Logger -> DumpFlag -> IO ()
- logDumpFile :: Logger -> PprStyle -> DumpFlag -> String -> DumpFormat -> SDoc -> IO ()
- defaultTraceAction :: TraceAction a
- putTraceMsg :: Logger -> TraceAction a
- loggerTraceFlushUpdate :: Logger -> (IO () -> IO ()) -> Logger
- loggerTraceFlush :: Logger -> IO ()
- logTraceMsg :: Logger -> String -> SDoc -> a -> a
Documentation
class ContainsLogger t where Source #
extractLogger :: t -> Logger Source #
Instances
ContainsLogger (Env gbl lcl) Source # | |
Defined in GHC.Tc.Types extractLogger :: Env gbl lcl -> Logger Source # |
Logger setup
initLogger :: IO Logger Source #
type DumpAction = LogFlags -> PprStyle -> DumpFlag -> String -> DumpFormat -> SDoc -> IO () Source #
data DumpFormat Source #
Format of a dump
Dump formats are loosely defined: dumps may contain various additional
headers and annotations and they may be partial. DumpFormat
is mainly a hint
(e.g. for syntax highlighters).
FormatHaskell | Haskell |
FormatCore | Core |
FormatSTG | STG |
FormatByteCode | ByteCode |
FormatCMM | Cmm |
FormatASM | Assembly code |
FormatC | C code/header |
FormatLLVM | LLVM bytecode |
FormatText | Unstructured dump |
Instances
Show DumpFormat Source # | |
Defined in GHC.Utils.Logger | |
Eq DumpFormat Source # | |
Defined in GHC.Utils.Logger (==) :: DumpFormat -> DumpFormat -> Bool # (/=) :: DumpFormat -> DumpFormat -> Bool # |
Hooks
popLogHook :: Logger -> Logger Source #
Pop a log hook
popDumpHook :: Logger -> Logger Source #
Pop a dump hook
pushDumpHook :: (DumpAction -> DumpAction) -> Logger -> Logger Source #
Push a dump hook
popTraceHook :: Logger -> Logger Source #
Pop a trace hook
pushTraceHook :: (forall a. TraceAction a -> TraceAction a) -> Logger -> Logger Source #
Push a trace hook
Flags
Logger flags
LogFlags | |
|
defaultLogFlags :: LogFlags Source #
Default LogFlags
Logging
defaultLogActionHPrintDoc :: LogFlags -> Bool -> Handle -> SDoc -> IO () Source #
Like defaultLogActionHPutStrDoc
but appends an extra newline.
defaultLogActionHPutStrDoc :: LogFlags -> Bool -> Handle -> SDoc -> IO () Source #
The boolean arguments let's the pretty printer know if it can optimize indent by writing ascii ' ' characters without going through decoding.
Dumping
defaultDumpAction :: DumpCache -> LogAction -> DumpAction Source #
Default action for dumpAction
hook
putDumpFile :: Logger -> DumpAction Source #
Dump something
putDumpFileMaybe :: Logger -> DumpFlag -> String -> DumpFormat -> SDoc -> IO () Source #
Dump if the given DumpFlag is set
putDumpFileMaybe' :: Logger -> PrintUnqualified -> DumpFlag -> String -> DumpFormat -> SDoc -> IO () Source #
Dump if the given DumpFlag is set
Unlike putDumpFileMaybe
, has a PrintUnqualified argument
withDumpFileHandle :: DumpCache -> LogFlags -> DumpFlag -> (Maybe Handle -> IO ()) -> IO () Source #
touchDumpFile :: Logger -> DumpFlag -> IO () Source #
Ensure that a dump file is created even if it stays empty
logDumpFile :: Logger -> PprStyle -> DumpFlag -> String -> DumpFormat -> SDoc -> IO () Source #
Dump something
Tracing
defaultTraceAction :: TraceAction a Source #
Default action for traceAction
hook
putTraceMsg :: Logger -> TraceAction a Source #
Trace something
loggerTraceFlushUpdate :: Logger -> (IO () -> IO ()) -> Logger Source #
Set the trace flushing function
The currently set trace flushing function is passed to the updating function
loggerTraceFlush :: Logger -> IO () Source #
Calls the trace flushing function