[Part 5] Logging with C# applications

2016-03-19

Code

1 minute

Check out the codes in GitHub.

I generated a C# logging class using this command:

mc -css <Namespace_here> jytrace.man

So far, most of my event templates use an ANSI string data type which (I believe) is not supported by C#. As you can see in part 1, I use ANSI data type for my File and Function fields so that I can use __FILE__ and __FUNCTION__ as inputs in C++. Thats why I added a new event template with all fields using UNICODE data types. Again, you can refer to the whole package here for reference.

To use the logging class, I added the generated file to my project. I also added a wrapper class so I can use the CallerMemberName and CallerFilePath attributes in C#.

public static bool Verbose(
    string m,
    [CallerMemberName] string memberName = "?",
    [CallerFilePath] string srcFile = "?",
    [CallerLineNumber] int srcNum = 0)
{
    return JyTrace.ProviderJyTrace.EventWriteSimple("ETWTest", Path.GetFileName(srcFile), memberName, "Trace:", m);
}

The actual log call:

TraceCore.Verbose("Hello from CS!");

Check out part 6.