The Log external object allows you to write messages in the log system on different levels that will go to different streams.
Does not have any.
All of them allow you to indicate a "topic" value with the meaning of the data written.
Writes a message in the log; optionally, you can indicate a topic and the desired log level.
Writes a fatal message in the log (through the errors flow channel).
Writes an error message in the log (through the errors flow channel).
Writes a warning message in the log (through the warnings flow channel).
Writes an info message in the log (through the info flow channel).
Writes a debug message in the log (through the debug flow channel).
Note: If you pass a Topic that begins with $, the log message literally takes what follows the dollar sign as the topic. Otherwise, the topic will be the concatenation of the string "GeneXusUserLog" followed by the topic you passed as a parameter: GeneXusUserLog.
You can also change the "GeneXusUserLog" string for something else, defining an environment variable named USER_LOG_NAMESPACE.
Does not have any.
Enumerated domain with the available log levels. In order of significance:
FATAL |
Fatal level |
ERROR |
Error level |
WARNING |
Warning level |
INFO |
Informational level |
DEBUG |
Debug level |
OFF |
Log disabled |
|
|
Suppose you have the Default Log Level property set to "Warning" and the following code in a client event:
Event 'Test'
Composite
Log.Debug(!"Debug message",!"MyCompany.Test.TestSDLoggingDebug")
Log.Info(!"Info message",!"MyCompany.Test.TestSDLoggingInfo")
Log.Warning(!"Warning message",!"MyCompany.Test.TestSDLoggingWarning")
Log.Error(!"Error message",!"MyCompany.Test.TestSDLoggingError")
EndComposite
Endevent
Then, in Android's LogCat, you will see the following messages (refer to HowTo: Enable logging for Native Mobile).
Note that it only displays Warning and Error messages due to the Log Level property. Other messages are ignored (Debug and Info).
Note: Remember that log messages will be displayed on LogCat/XCode in online applications only when the Log external object is executed on client-side events. In this case, the Start, Refresh, and Load events will print the log depending on the server-side configuration (as shown in the example below).
Suppose the User Log level property is set to "6.All" and the Log output property is set to "File". Then, if you write an event like this:
Event 'Test'
Log.Write(!"Write message", !"MyCompany.Test.TestLoggingWrite",LogLEvel.DEBUG)
Log.Debug(!"Debug message",!"MyCompany.Test.TestLoggingDebug")
Log.Info(!"Info message",!"MyCompany.Test.TestLoggingInfo")
Log.Warning(!"Warning message",!"MyCompany.Test.TestLoggingWarning")
Log.Error(!"Error message",!"MyCompany.Test.TestLoggingError")
Log.Fatal(!"Fatal message",!"MyCompany.Test.TestLoggingFatal")
Endevent
In the client.log file, you will see the following messages:
Notes:
- The following statements are equivalent:
msg(&string,status)
Log.Debug(&string)
Log.Write(&string,"",LogLevel.DEBUG)
-
The topic by default is concatenated to a hardcoded string "GeneXusUserLog".
Generators: Apple,
Android,
.NET,
.NET Framework,
Java
This external object is available as of GeneXus 15 Upgrade 11
When using Modules for sharing GeneXus' interfaces (e.g. an API), it is highly recommended to follow these guidelines.
- Always include a log message on your operations, preferably in English and with no translation (using "!" notation, e.g. !"My log message") to simplify filters and searches.
- Add a topic to each log message indicating which object produces the message. You can use the following convention:
!"<Company>.<Module>.<Object>"
For example:
!"GeneXus.GeneXus.Common.Notifications.SendNotification"
where GeneXus is the company, GeneXus.Common.Notifications is the module (from the root), and SendNotification is the object.
- Use Log API instead of msg("<My message>",status)
HowTo: Enable logging for Native Mobile
Default Log Level property
Log level property
Download UILogging sample
Apple Developer - Debugging Tools
Android Developer - Write and View Logs with Logcat
HowTo: See trace information in applications hosted on .NET Cloud