Support systemd log severity prefixes
This is mostly useful for hydra-queue-runner.
This commit is contained in:
		
							parent
							
								
									b3491c781c
								
							
						
					
					
						commit
						db55940d9e
					
				
					 3 changed files with 18 additions and 1 deletions
				
			
		|  | @ -90,6 +90,7 @@ static void setLogType(string lt) | ||||||
|     if (lt == "pretty") logType = ltPretty; |     if (lt == "pretty") logType = ltPretty; | ||||||
|     else if (lt == "escapes") logType = ltEscapes; |     else if (lt == "escapes") logType = ltEscapes; | ||||||
|     else if (lt == "flat") logType = ltFlat; |     else if (lt == "flat") logType = ltFlat; | ||||||
|  |     else if (lt == "systemd") logType = ltSystemd; | ||||||
|     else throw UsageError("unknown log type"); |     else throw UsageError("unknown log type"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -116,6 +117,9 @@ void initNix() | ||||||
| 
 | 
 | ||||||
|     std::ios::sync_with_stdio(false); |     std::ios::sync_with_stdio(false); | ||||||
| 
 | 
 | ||||||
|  |     if (getEnv("IN_SYSTEMD") == "1") | ||||||
|  |         logType = ltSystemd; | ||||||
|  | 
 | ||||||
|     settings.processEnvironment(); |     settings.processEnvironment(); | ||||||
|     settings.loadConfFile(); |     settings.loadConfFile(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -477,12 +477,24 @@ void printMsg_(Verbosity level, const FormatOrString & fs) | ||||||
| { | { | ||||||
|     checkInterrupt(); |     checkInterrupt(); | ||||||
|     if (level > verbosity) return; |     if (level > verbosity) return; | ||||||
|  | 
 | ||||||
|     string prefix; |     string prefix; | ||||||
|     if (logType == ltPretty) |     if (logType == ltPretty) | ||||||
|         for (int i = 0; i < nestingLevel; i++) |         for (int i = 0; i < nestingLevel; i++) | ||||||
|             prefix += "|   "; |             prefix += "|   "; | ||||||
|     else if (logType == ltEscapes && level != lvlInfo) |     else if (logType == ltEscapes && level != lvlInfo) | ||||||
|         prefix = "\033[" + escVerbosity(level) + "s"; |         prefix = "\033[" + escVerbosity(level) + "s"; | ||||||
|  |     else if (logType == ltSystemd) { | ||||||
|  |         char c; | ||||||
|  |         switch (level) { | ||||||
|  |             case lvlError: c = '3'; break; | ||||||
|  |             case lvlInfo: c = '5'; break; | ||||||
|  |             case lvlTalkative: case lvlChatty: c = '6'; break; | ||||||
|  |             default: c = '7'; | ||||||
|  |         } | ||||||
|  |         prefix = string("<") + c + ">"; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     string s = (format("%1%%2%\n") % prefix % fs.s).str(); |     string s = (format("%1%%2%\n") % prefix % fs.s).str(); | ||||||
|     if (!isatty(STDERR_FILENO)) s = filterANSIEscapes(s); |     if (!isatty(STDERR_FILENO)) s = filterANSIEscapes(s); | ||||||
|     writeToStderr(s); |     writeToStderr(s); | ||||||
|  |  | ||||||
|  | @ -122,7 +122,8 @@ T singleton(const A & a) | ||||||
| typedef enum { | typedef enum { | ||||||
|     ltPretty,   /* nice, nested output */ |     ltPretty,   /* nice, nested output */ | ||||||
|     ltEscapes,  /* nesting indicated using escape codes (for log2xml) */ |     ltEscapes,  /* nesting indicated using escape codes (for log2xml) */ | ||||||
|     ltFlat      /* no nesting */ |     ltFlat,     /* no nesting */ | ||||||
|  |     ltSystemd,  /* use systemd severity prefixes */ | ||||||
| } LogType; | } LogType; | ||||||
| 
 | 
 | ||||||
| extern LogType logType; | extern LogType logType; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue