mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	common/logging: Create a new backed for android's logcat
logging
This commit is contained in:
		
							parent
							
								
									84844e1b24
								
							
						
					
					
						commit
						9ad6bc29b5
					
				
					 5 changed files with 55 additions and 11 deletions
				
			
		|  | @ -140,6 +140,10 @@ void ColorConsoleBackend::Write(const Entry& entry) { | ||||||
|     PrintColoredMessage(entry); |     PrintColoredMessage(entry); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void LogcatBackend::Write(const Entry& entry) { | ||||||
|  |     PrintMessageToLogcat(entry); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| FileBackend::FileBackend(const std::string& filename) : bytes_written(0) { | FileBackend::FileBackend(const std::string& filename) : bytes_written(0) { | ||||||
|     if (FileUtil::Exists(filename + ".old.txt")) { |     if (FileUtil::Exists(filename + ".old.txt")) { | ||||||
|         FileUtil::Delete(filename + ".old.txt"); |         FileUtil::Delete(filename + ".old.txt"); | ||||||
|  |  | ||||||
|  | @ -81,6 +81,21 @@ public: | ||||||
|     void Write(const Entry& entry) override; |     void Write(const Entry& entry) override; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | /**
 | ||||||
|  |  * Backend that writes to the Android logcat | ||||||
|  |  */ | ||||||
|  | class LogcatBackend : public Backend { | ||||||
|  | public: | ||||||
|  |     static const char* Name() { | ||||||
|  |         return "logcat"; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     const char* GetName() const override { | ||||||
|  |         return Name(); | ||||||
|  |     } | ||||||
|  |     void Write(const Entry& entry) override; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * Backend that writes to a file passed into the constructor |  * Backend that writes to a file passed into the constructor | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  | @ -9,6 +9,4 @@ | ||||||
| #include <string_view> | #include <string_view> | ||||||
| #include "common/logging/log.h" | #include "common/logging/log.h" | ||||||
| 
 | 
 | ||||||
| namespace Log { | namespace Log {} // namespace Log
 | ||||||
| 
 |  | ||||||
| } // namespace Log
 |  | ||||||
|  |  | ||||||
|  | @ -34,13 +34,7 @@ std::string FormatLogMessage(const Entry& entry) { | ||||||
| 
 | 
 | ||||||
| void PrintMessage(const Entry& entry) { | void PrintMessage(const Entry& entry) { | ||||||
|     const auto str = FormatLogMessage(entry).append(1, '\n'); |     const auto str = FormatLogMessage(entry).append(1, '\n'); | ||||||
| #ifdef ANDROID |  | ||||||
|     // Android's log level enum are offset by '2'
 |  | ||||||
|     const int android_log_level = static_cast<int>(entry.log_level) + 2; |  | ||||||
|     __android_log_print(android_log_level, "CitraNative", "%s", str.c_str()); |  | ||||||
| #else |  | ||||||
|     fputs(str.c_str(), stderr); |     fputs(str.c_str(), stderr); | ||||||
| #endif |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void PrintColoredMessage(const Entry& entry) { | void PrintColoredMessage(const Entry& entry) { | ||||||
|  | @ -78,7 +72,7 @@ void PrintColoredMessage(const Entry& entry) { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     SetConsoleTextAttribute(console_handle, color); |     SetConsoleTextAttribute(console_handle, color); | ||||||
| #elif !defined(ANDROID) | #else | ||||||
| #define ESC "\x1b" | #define ESC "\x1b" | ||||||
|     const char* color = ""; |     const char* color = ""; | ||||||
|     switch (entry.log_level) { |     switch (entry.log_level) { | ||||||
|  | @ -111,9 +105,40 @@ void PrintColoredMessage(const Entry& entry) { | ||||||
| 
 | 
 | ||||||
| #ifdef _WIN32 | #ifdef _WIN32 | ||||||
|     SetConsoleTextAttribute(console_handle, original_info.wAttributes); |     SetConsoleTextAttribute(console_handle, original_info.wAttributes); | ||||||
| #elif !defined(ANDROID) | #else | ||||||
|     fputs(ESC "[0m", stderr); |     fputs(ESC "[0m", stderr); | ||||||
| #undef ESC | #undef ESC | ||||||
| #endif | #endif | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | void PrintMessageToLogcat(const Entry& entry) { | ||||||
|  | #ifdef ANDROID | ||||||
|  |     const auto str = FormatLogMessage(entry); | ||||||
|  | 
 | ||||||
|  |     android_LogPriority android_log_priority; | ||||||
|  |     switch (entry.log_level) { | ||||||
|  |     case Level::Trace: | ||||||
|  |         android_log_priority = ANDROID_LOG_VERBOSE; | ||||||
|  |         break; | ||||||
|  |     case Level::Debug: | ||||||
|  |         android_log_priority = ANDROID_LOG_DEBUG; | ||||||
|  |         break; | ||||||
|  |     case Level::Info: | ||||||
|  |         android_log_priority = ANDROID_LOG_INFO; | ||||||
|  |         break; | ||||||
|  |     case Level::Warning: | ||||||
|  |         android_log_priority = ANDROID_LOG_WARN; | ||||||
|  |         break; | ||||||
|  |     case Level::Error: | ||||||
|  |         android_log_priority = ANDROID_LOG_ERROR; | ||||||
|  |         break; | ||||||
|  |     case Level::Critical: | ||||||
|  |         android_log_priority = ANDROID_LOG_FATAL; | ||||||
|  |         break; | ||||||
|  |     case Level::Count: | ||||||
|  |         UNREACHABLE(); | ||||||
|  |     } | ||||||
|  |     __android_log_print(android_log_priority, "CitraNative", "%s", str.c_str()); | ||||||
|  | #endif | ||||||
|  | } | ||||||
| } // namespace Log
 | } // namespace Log
 | ||||||
|  |  | ||||||
|  | @ -17,4 +17,6 @@ std::string FormatLogMessage(const Entry& entry); | ||||||
| void PrintMessage(const Entry& entry); | void PrintMessage(const Entry& entry); | ||||||
| /// Prints the same message as `PrintMessage`, but colored according to the severity level.
 | /// Prints the same message as `PrintMessage`, but colored according to the severity level.
 | ||||||
| void PrintColoredMessage(const Entry& entry); | void PrintColoredMessage(const Entry& entry); | ||||||
|  | /// Formats and prints a log entry to the android logcat.
 | ||||||
|  | void PrintMessageToLogcat(const Entry& entry); | ||||||
| } // namespace Log
 | } // namespace Log
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue