Detailed Description

Classes

class  BinaryNinja::LogListener
 
class  BinaryNinja::Logger
 Logger is a class allowing scoped logging to the console. More...
 
class  BinaryNinja::LogRegistry
 A class allowing registering and retrieving Loggers. More...
 

Functions

void BinaryNinja::Log (BNLogLevel level, const char *fmt,...)
 Logs to the error console with the given BNLogLevel. More...
 
void BinaryNinja::LogTrace (const char *fmt,...)
 LogTrace only writes text to the error console if the console is set to log level: DebugLog Log level and the build is not a DEBUG build (i.e. More...
 
void BinaryNinja::LogDebug (const char *fmt,...)
 LogDebug only writes text to the error console if the console is set to log level: DebugLog Log level DebugLog is the most verbose logging level in release builds. More...
 
void BinaryNinja::LogInfo (const char *fmt,...)
 LogInfo always writes text to the error console, and corresponds to the log level: InfoLog. More...
 
void BinaryNinja::LogWarn (const char *fmt,...)
 LogWarn writes text to the error console including a warning icon, and also shows a warning icon in the bottom pane. More...
 
void BinaryNinja::LogError (const char *fmt,...)
 LogError writes text to the error console and pops up the error console. More...
 
void BinaryNinja::LogAlert (const char *fmt,...)
 LogAlert pops up a message box displaying the alert message and logs to the error console. More...
 
template<typename... T>
void BinaryNinja::LogF (BNLogLevel level, fmt::format_string< T... > format, T &&... args)
 Logs to the error console with the given BNLogLevel. More...
 
template<typename... T>
void BinaryNinja::LogTraceF (fmt::format_string< T... > format, T &&... args)
 LogTrace only writes text to the error console if the console is set to log level: DebugLog Log level and the build is not a DEBUG build (i.e. More...
 
template<typename... T>
void BinaryNinja::LogDebugF (fmt::format_string< T... > format, T &&... args)
 LogDebug only writes text to the error console if the console is set to log level: DebugLog Log level DebugLog is the most verbose logging level in release builds. More...
 
template<typename... T>
void BinaryNinja::LogInfoF (fmt::format_string< T... > format, T &&... args)
 LogInfo always writes text to the error console, and corresponds to the log level: InfoLog. More...
 
template<typename... T>
void BinaryNinja::LogWarnF (fmt::format_string< T... > format, T &&... args)
 LogWarn writes text to the error console including a warning icon, and also shows a warning icon in the bottom pane. More...
 
template<typename... T>
void BinaryNinja::LogErrorF (fmt::format_string< T... > format, T &&... args)
 LogError writes text to the error console and pops up the error console. More...
 
template<typename... T>
void BinaryNinja::LogAlertF (fmt::format_string< T... > format, T &&... args)
 LogAlert pops up a message box displaying the alert message and logs to the error console. More...
 
void BinaryNinja::LogToStdout (BNLogLevel minimumLevel)
 Redirects the minimum level passed to standard out. More...
 
void BinaryNinja::LogToStderr (BNLogLevel minimumLevel)
 Redirects the minimum level passed to standard error. More...
 
bool BinaryNinja::LogToFile (BNLogLevel minimumLevel, const std::string &path, bool append=false)
 Redirects minimum log level to the file at `path`, optionally appending rather than overwriting. More...
 
void BinaryNinja::CloseLogs ()
 Close all log files. More...
 

Class Documentation

◆ BinaryNinja::LogListener

class BinaryNinja::LogListener

Public Member Functions

virtual ~LogListener ()
 
virtual void LogMessage (size_t session, BNLogLevel level, const std::string &msg, const std::string &logger_name="", size_t tid=0)=0
 
virtual void CloseLog ()
 
virtual BNLogLevel GetLogLevel ()
 

Static Public Member Functions

static void RegisterLogListener (LogListener *listener)
 
static void UnregisterLogListener (LogListener *listener)
 
static void UpdateLogListeners ()
 

Constructor & Destructor Documentation

◆ ~LogListener()

virtual BinaryNinja::LogListener::~LogListener ( )
inlinevirtual

Member Function Documentation

◆ RegisterLogListener()

void LogListener::RegisterLogListener ( LogListener listener)
static

◆ UnregisterLogListener()

void LogListener::UnregisterLogListener ( LogListener listener)
static

◆ UpdateLogListeners()

void LogListener::UpdateLogListeners ( )
static

◆ LogMessage()

virtual void BinaryNinja::LogListener::LogMessage ( size_t  session,
BNLogLevel  level,
const std::string &  msg,
const std::string &  logger_name = "",
size_t  tid = 0 
)
pure virtual

Implemented in LogListModel.

◆ CloseLog()

virtual void BinaryNinja::LogListener::CloseLog ( )
inlinevirtual

◆ GetLogLevel()

virtual BNLogLevel BinaryNinja::LogListener::GetLogLevel ( )
inlinevirtual

Reimplemented in LogListModel.

◆ BinaryNinja::Logger

class BinaryNinja::Logger

Logger is a class allowing scoped logging to the console.

Public Member Functions

 Logger (BNLogger *logger)
 
 Logger (const std::string &loggerName, size_t sessionId=0)
 Create a logger with the specified name and session ID. More...
 
void Log (BNLogLevel level, const char *fmt,...)
 Logs to the error console with the given BNLogLevel. More...
 
void LogTrace (const char *fmt,...)
 LogTrace only writes text to the error console if the console is set to log level: DebugLog Log level and the build is not a DEBUG build (i.e. More...
 
void LogDebug (const char *fmt,...)
 LogDebug only writes text to the error console if the console is set to log level: DebugLog Log level DebugLog is the most verbose logging level in release builds. More...
 
void LogInfo (const char *fmt,...)
 LogInfo always writes text to the error console, and corresponds to the log level: InfoLog. More...
 
void LogWarn (const char *fmt,...)
 LogWarn writes text to the error console including a warning icon, and also shows a warning icon in the bottom pane. More...
 
void LogError (const char *fmt,...)
 LogError writes text to the error console and pops up the error console. More...
 
void LogAlert (const char *fmt,...)
 LogAlert pops up a message box displaying the alert message and logs to the error console. More...
 
template<typename... T>
void LogF (BNLogLevel level, fmt::format_string< T... > format, T &&... args)
 Logs to the error console with the given BNLogLevel. More...
 
template<typename... T>
void LogTraceF (fmt::format_string< T... > format, T &&... args)
 LogTrace only writes text to the error console if the console is set to log level: DebugLog Log level and the build is not a DEBUG build (i.e. More...
 
template<typename... T>
void LogDebugF (fmt::format_string< T... > format, T &&... args)
 LogDebug only writes text to the error console if the console is set to log level: DebugLog Log level DebugLog is the most verbose logging level in release builds. More...
 
template<typename... T>
void LogInfoF (fmt::format_string< T... > format, T &&... args)
 LogInfo always writes text to the error console, and corresponds to the log level: InfoLog. More...
 
template<typename... T>
void LogWarnF (fmt::format_string< T... > format, T &&... args)
 LogWarn writes text to the error console including a warning icon, and also shows a warning icon in the bottom pane. More...
 
template<typename... T>
void LogErrorF (fmt::format_string< T... > format, T &&... args)
 LogError writes text to the error console and pops up the error console. More...
 
template<typename... T>
void LogAlertF (fmt::format_string< T... > format, T &&... args)
 LogAlert pops up a message box displaying the alert message and logs to the error console. More...
 
std::string GetName ()
 Get the name registered for this Logger. More...
 
size_t GetSessionId ()
 Get the session ID registered for this logger. More...
 
- Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNLogger, BNNewLoggerReference, BNFreeLogger >
 CoreRefCountObject ()
 
virtual ~CoreRefCountObject ()
 
BNLoggerGetObject () const
 
void AddRef ()
 
void Release ()
 
void AddRefForRegistration ()
 
void ReleaseForRegistration ()
 
void AddRefForCallback ()
 
void ReleaseForCallback ()
 

Friends

struct Iterator
 

Additional Inherited Members

- Static Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNLogger, BNNewLoggerReference, BNFreeLogger >
static BNLoggerGetObject (CoreRefCountObject *obj)
 
static BNLoggerGetObject (const CoreRefCountObject *obj)
 
- Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNLogger, BNNewLoggerReference, BNFreeLogger >
std::atomic< int > m_refs
 
bool m_registeredRef
 
BNLoggerm_object
 

Constructor & Destructor Documentation

◆ Logger() [1/2]

Logger::Logger ( BNLogger logger)

◆ Logger() [2/2]

BinaryNinja::Logger::Logger ( const std::string &  loggerName,
size_t  sessionId = 0 
)

Create a logger with the specified name and session ID.

Warning
You may want to use LogRegistry::CreateLogger and LogRegistry::GetLogger instead of this. If you already have access to a BinaryView, you may want to use bv->CreateLogger() instead of this.
See also
BinaryView::CreateLogger()
auto logger = Logger("MyPluginName", 0);
Logger(BNLogger *logger)
Definition: log.cpp:242

Session ID corresponds to the tab for the specified BinaryView, and the default of 0 will log to *all tabs*.

See also
FileMetadata::GetSessionId()
Parameters
loggerNameName of the logger to create
sessionIdSession ID for the logger.

Member Function Documentation

◆ Log()

void Logger::Log ( BNLogLevel  level,
const char *  fmt,
  ... 
)

Logs to the error console with the given BNLogLevel.

Thread Safe:
Yes
Parameters
levelBNLogLevel debug log level
fmtC-style format string.
...Variable arguments corresponding to the format string.

◆ LogTrace()

void Logger::LogTrace ( const char *  fmt,
  ... 
)

LogTrace only writes text to the error console if the console is set to log level: DebugLog Log level and the build is not a DEBUG build (i.e.

the preprocessor directive _DEBUG is defined)

Thread Safe:
Yes
Parameters
fmtC-style format string.
...Variable arguments corresponding to the format string.

◆ LogDebug()

void Logger::LogDebug ( const char *  fmt,
  ... 
)

LogDebug only writes text to the error console if the console is set to log level: DebugLog Log level DebugLog is the most verbose logging level in release builds.

Thread Safe:
Yes
Parameters
fmtC-style format string.
...Variable arguments corresponding to the format string.

◆ LogInfo()

void Logger::LogInfo ( const char *  fmt,
  ... 
)

LogInfo always writes text to the error console, and corresponds to the log level: InfoLog.

Log level InfoLog is the second most verbose logging level.

Thread Safe:
Yes
Parameters
fmtC-style format string.
...Variable arguments corresponding to the format string.

◆ LogWarn()

void Logger::LogWarn ( const char *  fmt,
  ... 
)

LogWarn writes text to the error console including a warning icon, and also shows a warning icon in the bottom pane.

LogWarn corresponds to the log level: WarningLog.

Thread Safe:
Yes
Parameters
fmtC-style format string.
...Variable arguments corresponding to the format string.

◆ LogError()

void Logger::LogError ( const char *  fmt,
  ... 
)

LogError writes text to the error console and pops up the error console.

Additionally, Errors in the console log include a error icon. LogError corresponds to the log level: ErrorLog.

Thread Safe:
Yes
Parameters
fmtC-style format string.
...Variable arguments corresponding to the format string.

◆ LogAlert()

void Logger::LogAlert ( const char *  fmt,
  ... 
)

LogAlert pops up a message box displaying the alert message and logs to the error console.

LogAlert corresponds to the log level: AlertLog.

Thread Safe:
Yes
Parameters
fmtC-style format string.
...Variable arguments corresponding to the format string.

◆ LogF()

template<typename... T>
void BinaryNinja::Logger::LogF ( BNLogLevel  level,
fmt::format_string< T... >  format,
T &&...  args 
)
inline

Logs to the error console with the given BNLogLevel.

Thread Safe:
Yes
Parameters
levelBNLogLevel debug log level
formatfmt-style format string.
...Variable arguments corresponding to the format string.

◆ LogTraceF()

template<typename... T>
void BinaryNinja::Logger::LogTraceF ( fmt::format_string< T... >  format,
T &&...  args 
)
inline

LogTrace only writes text to the error console if the console is set to log level: DebugLog Log level and the build is not a DEBUG build (i.e.

the preprocessor directive _DEBUG is defined)

Thread Safe:
Yes
Parameters
formatfmt-style format string.
...Variable arguments corresponding to the format string.

◆ LogDebugF()

template<typename... T>
void BinaryNinja::Logger::LogDebugF ( fmt::format_string< T... >  format,
T &&...  args 
)
inline

LogDebug only writes text to the error console if the console is set to log level: DebugLog Log level DebugLog is the most verbose logging level in release builds.

Thread Safe:
Yes
Parameters
formatfmt-style format string.
...Variable arguments corresponding to the format string.

◆ LogInfoF()

template<typename... T>
void BinaryNinja::Logger::LogInfoF ( fmt::format_string< T... >  format,
T &&...  args 
)
inline

LogInfo always writes text to the error console, and corresponds to the log level: InfoLog.

Log level InfoLog is the second most verbose logging level.

Thread Safe:
Yes
Parameters
formatfmt-style format string.
...Variable arguments corresponding to the format string.

◆ LogWarnF()

template<typename... T>
void BinaryNinja::Logger::LogWarnF ( fmt::format_string< T... >  format,
T &&...  args 
)
inline

LogWarn writes text to the error console including a warning icon, and also shows a warning icon in the bottom pane.

LogWarn corresponds to the log level: WarningLog.

Thread Safe:
Yes
Parameters
formatfmt-style format string.
...Variable arguments corresponding to the format string.

◆ LogErrorF()

template<typename... T>
void BinaryNinja::Logger::LogErrorF ( fmt::format_string< T... >  format,
T &&...  args 
)
inline

LogError writes text to the error console and pops up the error console.

Additionally, Errors in the console log include a error icon. LogError corresponds to the log level: ErrorLog.

Thread Safe:
Yes
Parameters
formatfmt-style format string.
...Variable arguments corresponding to the format string.

◆ LogAlertF()

template<typename... T>
void BinaryNinja::Logger::LogAlertF ( fmt::format_string< T... >  format,
T &&...  args 
)
inline

LogAlert pops up a message box displaying the alert message and logs to the error console.

LogAlert corresponds to the log level: AlertLog.

Thread Safe:
Yes
Parameters
formatfmt-style format string.
...Variable arguments corresponding to the format string.

◆ GetName()

string Logger::GetName ( )

Get the name registered for this Logger.

Thread Safe:
Yes
Returns
The logger name

◆ GetSessionId()

size_t Logger::GetSessionId ( )

Get the session ID registered for this logger.

Thread Safe:
Yes
Returns
The logger session ID

Friends And Related Function Documentation

◆ Iterator

friend struct Iterator
friend

◆ BinaryNinja::LogRegistry

class BinaryNinja::LogRegistry

A class allowing registering and retrieving Loggers.

See also
BinaryView::CreateLogger

Static Public Member Functions

static Ref< LoggerCreateLogger (const std::string &loggerName, size_t sessionId=0)
 Create a logger with the specified name and session ID. More...
 
static Ref< LoggerGetLogger (const std::string &loggerName, size_t sessionId=0)
 Get a logger with the specified name and session ID. More...
 
static std::vector< std::string > GetLoggerNames ()
 Get the list of registered Logger names. More...
 

Member Function Documentation

◆ CreateLogger()

Ref< Logger > LogRegistry::CreateLogger ( const std::string &  loggerName,
size_t  sessionId = 0 
)
static

Create a logger with the specified name and session ID.

Thread Safe:
Yes
Note
If you already have a BinaryView, you may want to use BinaryView::CreateLogger instead of this.
auto sessionID = bv->GetFile()->GetSessionId();
auto logger = LogRegistry::CreateLogger("MyPluginName", sessionID);
static Ref< Logger > CreateLogger(const std::string &loggerName, size_t sessionId=0)
Create a logger with the specified name and session ID.
Definition: log.cpp:383

Session ID corresponds to the tab for the specified BinaryView, and the default of 0 will log to *all tabs*.

See also
FileMetadata::GetSessionId()
Parameters
loggerNameName of the logger to create
sessionIdSession ID for the logger
Returns
The created logger

◆ GetLogger()

Ref< Logger > LogRegistry::GetLogger ( const std::string &  loggerName,
size_t  sessionId = 0 
)
static

Get a logger with the specified name and session ID.

Thread Safe:
Yes
auto sessionID = bv->GetFile()->GetSessionId();
auto logger = LogRegistry::GetLogger("MyPluginName", sessionID);
static Ref< Logger > GetLogger(const std::string &loggerName, size_t sessionId=0)
Get a logger with the specified name and session ID.
Definition: log.cpp:389

Session ID corresponds to the tab for the specified BinaryView, and the default of 0 will log to *all tabs*.

See also
FileMetadata::GetSessionId()
Parameters
loggerNameName of the logger to create
sessionIdSession ID for the logger
Returns
The created logger

◆ GetLoggerNames()

vector< string > LogRegistry::GetLoggerNames ( )
static

Get the list of registered Logger names.

Thread Safe:
Yes
Returns
a list of registered logger names

Function Documentation

◆ Log()

void BinaryNinja::Log ( BNLogLevel  level,
const char *  fmt,
  ... 
)

Logs to the error console with the given BNLogLevel.

Thread Safe:
Yes
Parameters
levelBNLogLevel debug log level
fmtC-style format string.
...Variable arguments corresponding to the format string.

◆ LogTrace()

void BinaryNinja::LogTrace ( const char *  fmt,
  ... 
)

LogTrace only writes text to the error console if the console is set to log level: DebugLog Log level and the build is not a DEBUG build (i.e.

the preprocessor directive _DEBUG is defined)

Thread Safe:
Yes
Parameters
fmtC-style format string.
...Variable arguments corresponding to the format string.

◆ LogDebug()

void BinaryNinja::LogDebug ( const char *  fmt,
  ... 
)

LogDebug only writes text to the error console if the console is set to log level: DebugLog Log level DebugLog is the most verbose logging level in release builds.

Thread Safe:
Yes
Parameters
fmtC-style format string.
...Variable arguments corresponding to the format string.

◆ LogInfo()

void BinaryNinja::LogInfo ( const char *  fmt,
  ... 
)

LogInfo always writes text to the error console, and corresponds to the log level: InfoLog.

Log level InfoLog is the second most verbose logging level.

Thread Safe:
Yes
Parameters
fmtC-style format string.
...Variable arguments corresponding to the format string.

◆ LogWarn()

void BinaryNinja::LogWarn ( const char *  fmt,
  ... 
)

LogWarn writes text to the error console including a warning icon, and also shows a warning icon in the bottom pane.

LogWarn corresponds to the log level: WarningLog.

Thread Safe:
Yes
Parameters
fmtC-style format string.
...Variable arguments corresponding to the format string.

◆ LogError()

void BinaryNinja::LogError ( const char *  fmt,
  ... 
)

LogError writes text to the error console and pops up the error console.

Additionally, Errors in the console log include a error icon. LogError corresponds to the log level: ErrorLog.

Thread Safe:
Yes
Parameters
fmtC-style format string.
...Variable arguments corresponding to the format string.

◆ LogAlert()

void BinaryNinja::LogAlert ( const char *  fmt,
  ... 
)

LogAlert pops up a message box displaying the alert message and logs to the error console.

LogAlert corresponds to the log level: AlertLog.

Thread Safe:
Yes
Parameters
fmtC-style format string.
...Variable arguments corresponding to the format string.

◆ LogF()

template<typename... T>
void BinaryNinja::LogF ( BNLogLevel  level,
fmt::format_string< T... >  format,
T &&...  args 
)

Logs to the error console with the given BNLogLevel.

Thread Safe:
Yes
Parameters
levelBNLogLevel debug log level
formatfmt-style format string.
...Variable arguments corresponding to the format string.

◆ LogTraceF()

template<typename... T>
void BinaryNinja::LogTraceF ( fmt::format_string< T... >  format,
T &&...  args 
)

LogTrace only writes text to the error console if the console is set to log level: DebugLog Log level and the build is not a DEBUG build (i.e.

the preprocessor directive _DEBUG is defined)

Thread Safe:
Yes
Parameters
formatfmt-style format string.
...Variable arguments corresponding to the format string.

◆ LogDebugF()

template<typename... T>
void BinaryNinja::LogDebugF ( fmt::format_string< T... >  format,
T &&...  args 
)

LogDebug only writes text to the error console if the console is set to log level: DebugLog Log level DebugLog is the most verbose logging level in release builds.

Thread Safe:
Yes
Parameters
formatfmt-style format string.
...Variable arguments corresponding to the format string.

◆ LogInfoF()

template<typename... T>
void BinaryNinja::LogInfoF ( fmt::format_string< T... >  format,
T &&...  args 
)

LogInfo always writes text to the error console, and corresponds to the log level: InfoLog.

Log level InfoLog is the second most verbose logging level.

Thread Safe:
Yes
Parameters
formatfmt-style format string.
...Variable arguments corresponding to the format string.

◆ LogWarnF()

template<typename... T>
void BinaryNinja::LogWarnF ( fmt::format_string< T... >  format,
T &&...  args 
)

LogWarn writes text to the error console including a warning icon, and also shows a warning icon in the bottom pane.

LogWarn corresponds to the log level: WarningLog.

Thread Safe:
Yes
Parameters
formatfmt-style format string.
...Variable arguments corresponding to the format string.

◆ LogErrorF()

template<typename... T>
void BinaryNinja::LogErrorF ( fmt::format_string< T... >  format,
T &&...  args 
)

LogError writes text to the error console and pops up the error console.

Additionally, Errors in the console log include a error icon. LogError corresponds to the log level: ErrorLog.

Thread Safe:
Yes
Parameters
formatfmt-style format string.
...Variable arguments corresponding to the format string.

◆ LogAlertF()

template<typename... T>
void BinaryNinja::LogAlertF ( fmt::format_string< T... >  format,
T &&...  args 
)

LogAlert pops up a message box displaying the alert message and logs to the error console.

LogAlert corresponds to the log level: AlertLog.

Thread Safe:
Yes
Parameters
formatfmt-style format string.
...Variable arguments corresponding to the format string.

◆ LogToStdout()

void BinaryNinja::LogToStdout ( BNLogLevel  minimumLevel)

Redirects the minimum level passed to standard out.

Thread Safe:
Yes
Parameters
minimumLevelminimum level to log to stdout

◆ LogToStderr()

void BinaryNinja::LogToStderr ( BNLogLevel  minimumLevel)

Redirects the minimum level passed to standard error.

Thread Safe:
Yes
Parameters
minimumLevelminimum level to log to stderr

◆ LogToFile()

bool BinaryNinja::LogToFile ( BNLogLevel  minimumLevel,
const std::string &  path,
bool  append = false 
)

Redirects minimum log level to the file at `path`, optionally appending rather than overwriting.

Thread Safe:
Yes
Parameters
minimumLevelminimum level to log to stderr
pathPath to log to
appendOptional flag for specifying appending. True = append, False = overwrite.

◆ CloseLogs()

void BinaryNinja::CloseLogs ( )

Close all log files.