.Net Logging
-
So I'm looking at NLog and Log4net. Why in the world does logging need to be so blasted complicated??? Now I'm sure some of you would say "Log4Net or NLog isn't complicated", but at the most basicl level, what's wrong with this:
public class Logger
{
public static string LogFile { get; set; }static Logger() { if (string.IsNullOrEmpty(LogFile)) { var path = System.Reflection.Assembly.GetEntryAssembly().Location; LogFile = string.Format("{0}\\\\MyLogFile.txt", path); } } public static void Info(string message) { using (var sr = new StreamWriter(LogFile, true)) { sr.WriteLine(message); } }
}
I've never understood why [This Much](https://csharp.today/log4net-tutorial-great-library-for-logging/) is needed just to write to a silly log file. Seems to me that these "tools" are just a solution looking for a problem. IMHO, WAY WAY WAY over-engineered.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
-
So I'm looking at NLog and Log4net. Why in the world does logging need to be so blasted complicated??? Now I'm sure some of you would say "Log4Net or NLog isn't complicated", but at the most basicl level, what's wrong with this:
public class Logger
{
public static string LogFile { get; set; }static Logger() { if (string.IsNullOrEmpty(LogFile)) { var path = System.Reflection.Assembly.GetEntryAssembly().Location; LogFile = string.Format("{0}\\\\MyLogFile.txt", path); } } public static void Info(string message) { using (var sr = new StreamWriter(LogFile, true)) { sr.WriteLine(message); } }
}
I've never understood why [This Much](https://csharp.today/log4net-tutorial-great-library-for-logging/) is needed just to write to a silly log file. Seems to me that these "tools" are just a solution looking for a problem. IMHO, WAY WAY WAY over-engineered.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
-
No, haven't seen it. I'm just venting on why it's so blasted much work just to write to a log file.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
-
So I'm looking at NLog and Log4net. Why in the world does logging need to be so blasted complicated??? Now I'm sure some of you would say "Log4Net or NLog isn't complicated", but at the most basicl level, what's wrong with this:
public class Logger
{
public static string LogFile { get; set; }static Logger() { if (string.IsNullOrEmpty(LogFile)) { var path = System.Reflection.Assembly.GetEntryAssembly().Location; LogFile = string.Format("{0}\\\\MyLogFile.txt", path); } } public static void Info(string message) { using (var sr = new StreamWriter(LogFile, true)) { sr.WriteLine(message); } }
}
I've never understood why [This Much](https://csharp.today/log4net-tutorial-great-library-for-logging/) is needed just to write to a silly log file. Seems to me that these "tools" are just a solution looking for a problem. IMHO, WAY WAY WAY over-engineered.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
Logging frameworks (etc.) are for developers who are too stupid to figure it out for themselves. If you're smart enough to recognize that the framework is crap, you don't need that framework. :cool:
-
Logging frameworks (etc.) are for developers who are too stupid to figure it out for themselves. If you're smart enough to recognize that the framework is crap, you don't need that framework. :cool:
I disagree. When you have code running in production it;s usually more difficult to diagnose what's happening, so logging gives you an advantage.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
-
So I'm looking at NLog and Log4net. Why in the world does logging need to be so blasted complicated??? Now I'm sure some of you would say "Log4Net or NLog isn't complicated", but at the most basicl level, what's wrong with this:
public class Logger
{
public static string LogFile { get; set; }static Logger() { if (string.IsNullOrEmpty(LogFile)) { var path = System.Reflection.Assembly.GetEntryAssembly().Location; LogFile = string.Format("{0}\\\\MyLogFile.txt", path); } } public static void Info(string message) { using (var sr = new StreamWriter(LogFile, true)) { sr.WriteLine(message); } }
}
I've never understood why [This Much](https://csharp.today/log4net-tutorial-great-library-for-logging/) is needed just to write to a silly log file. Seems to me that these "tools" are just a solution looking for a problem. IMHO, WAY WAY WAY over-engineered.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
For a simple application, what you posted may suffice. For complex, multi threaded services, the logging needs to be thread-safe, needs to be performant (even async), and may need to support multiple log listeners - and the target may be a text file, a database, azure storage, a web API, etc. That said, some of these logging frameworks kept adding features and now are unnecessarily complex, and may have reached a saturation point of over-engineering.
Nish Nishant Consultant Software Architect Ganymede Software Solutions LLC www.ganymedesoftwaresolutions.com
-
I disagree. When you have code running in production it;s usually more difficult to diagnose what's happening, so logging gives you an advantage.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
I never said otherwise.
-
So I'm looking at NLog and Log4net. Why in the world does logging need to be so blasted complicated??? Now I'm sure some of you would say "Log4Net or NLog isn't complicated", but at the most basicl level, what's wrong with this:
public class Logger
{
public static string LogFile { get; set; }static Logger() { if (string.IsNullOrEmpty(LogFile)) { var path = System.Reflection.Assembly.GetEntryAssembly().Location; LogFile = string.Format("{0}\\\\MyLogFile.txt", path); } } public static void Info(string message) { using (var sr = new StreamWriter(LogFile, true)) { sr.WriteLine(message); } }
}
I've never understood why [This Much](https://csharp.today/log4net-tutorial-great-library-for-logging/) is needed just to write to a silly log file. Seems to me that these "tools" are just a solution looking for a problem. IMHO, WAY WAY WAY over-engineered.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
X = What features you need from your logging system Y = What features a logging framework provides Usefulness of logging system = 1 / (Y - X)
Proud to have finally moved to the A-Ark. Which one are you in?
Author of the Guardians Saga (Sci-Fi/Fantasy novels) -
So I'm looking at NLog and Log4net. Why in the world does logging need to be so blasted complicated??? Now I'm sure some of you would say "Log4Net or NLog isn't complicated", but at the most basicl level, what's wrong with this:
public class Logger
{
public static string LogFile { get; set; }static Logger() { if (string.IsNullOrEmpty(LogFile)) { var path = System.Reflection.Assembly.GetEntryAssembly().Location; LogFile = string.Format("{0}\\\\MyLogFile.txt", path); } } public static void Info(string message) { using (var sr = new StreamWriter(LogFile, true)) { sr.WriteLine(message); } }
}
I've never understood why [This Much](https://csharp.today/log4net-tutorial-great-library-for-logging/) is needed just to write to a silly log file. Seems to me that these "tools" are just a solution looking for a problem. IMHO, WAY WAY WAY over-engineered.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
-
So I'm looking at NLog and Log4net. Why in the world does logging need to be so blasted complicated??? Now I'm sure some of you would say "Log4Net or NLog isn't complicated", but at the most basicl level, what's wrong with this:
public class Logger
{
public static string LogFile { get; set; }static Logger() { if (string.IsNullOrEmpty(LogFile)) { var path = System.Reflection.Assembly.GetEntryAssembly().Location; LogFile = string.Format("{0}\\\\MyLogFile.txt", path); } } public static void Info(string message) { using (var sr = new StreamWriter(LogFile, true)) { sr.WriteLine(message); } }
}
I've never understood why [This Much](https://csharp.today/log4net-tutorial-great-library-for-logging/) is needed just to write to a silly log file. Seems to me that these "tools" are just a solution looking for a problem. IMHO, WAY WAY WAY over-engineered.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
Kevin Marois wrote:
at the most basicl level, what's wrong with this:
public class Logger
{
public static string LogFile { get; set; }static Logger() { if (string.IsNullOrEmpty(LogFile)) { var path = System.Reflection.Assembly.GetEntryAssembly().Location; LogFile = string.Format("{0}\\MyLogFile.txt", path); } }
Well, it won't work in production for starters! The Executing assembly in production is normally in a folder that "hangs off" "Program Files" or "Program Files (x86)", and folders in that path are normally write protected for antivirus reasons. Use a "publically writable" folder like one below
Application.CommonAppDataPath
orEnvironment.SpecialFolder.CommonApplicationData
:/// <summary>
/// Get the Application Guid
/// </summary>
public static Guid AppGuid
{
get
{
Assembly asm = Assembly.GetEntryAssembly();
object[] attr = (asm.GetCustomAttributes(typeof(GuidAttribute), true));
return new Guid((attr[0] as GuidAttribute).Value);
}
}
/// <summary>
/// Get the current assembly Guid.
/// <remarks>
/// Note that the Assembly Guid is not necessarily the same as the
/// Application Guid - if this code is in a DLL, the Assembly Guid
/// will be the Guid for the DLL, not the active EXE file.
/// </remarks>
/// </summary>
public static Guid AssemblyGuid
{
get
{
Assembly asm = Assembly.GetExecutingAssembly();
object[] attr = (asm.GetCustomAttributes(typeof(GuidAttribute), true));
return new Guid((attr[0] as GuidAttribute).Value);
}
}
/// <summary>
/// Get all users data folder
/// </summary>
public static string AllUsersDataFolder
{
get
{
Guid appGuid = AppGuid;
string folderBase = Environment.GetFolderPath(Environme -
Kevin Marois wrote:
at the most basicl level, what's wrong with this:
public class Logger
{
public static string LogFile { get; set; }static Logger() { if (string.IsNullOrEmpty(LogFile)) { var path = System.Reflection.Assembly.GetEntryAssembly().Location; LogFile = string.Format("{0}\\MyLogFile.txt", path); } }
Well, it won't work in production for starters! The Executing assembly in production is normally in a folder that "hangs off" "Program Files" or "Program Files (x86)", and folders in that path are normally write protected for antivirus reasons. Use a "publically writable" folder like one below
Application.CommonAppDataPath
orEnvironment.SpecialFolder.CommonApplicationData
:/// <summary>
/// Get the Application Guid
/// </summary>
public static Guid AppGuid
{
get
{
Assembly asm = Assembly.GetEntryAssembly();
object[] attr = (asm.GetCustomAttributes(typeof(GuidAttribute), true));
return new Guid((attr[0] as GuidAttribute).Value);
}
}
/// <summary>
/// Get the current assembly Guid.
/// <remarks>
/// Note that the Assembly Guid is not necessarily the same as the
/// Application Guid - if this code is in a DLL, the Assembly Guid
/// will be the Guid for the DLL, not the active EXE file.
/// </remarks>
/// </summary>
public static Guid AssemblyGuid
{
get
{
Assembly asm = Assembly.GetExecutingAssembly();
object[] attr = (asm.GetCustomAttributes(typeof(GuidAttribute), true));
return new Guid((attr[0] as GuidAttribute).Value);
}
}
/// <summary>
/// Get all users data folder
/// </summary>
public static string AllUsersDataFolder
{
get
{
Guid appGuid = AppGuid;
string folderBase = Environment.GetFolderPath(EnvironmeAgreed. I just threw that in there for illustrative purposes
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
-
So I'm looking at NLog and Log4net. Why in the world does logging need to be so blasted complicated??? Now I'm sure some of you would say "Log4Net or NLog isn't complicated", but at the most basicl level, what's wrong with this:
public class Logger
{
public static string LogFile { get; set; }static Logger() { if (string.IsNullOrEmpty(LogFile)) { var path = System.Reflection.Assembly.GetEntryAssembly().Location; LogFile = string.Format("{0}\\\\MyLogFile.txt", path); } } public static void Info(string message) { using (var sr = new StreamWriter(LogFile, true)) { sr.WriteLine(message); } }
}
I've never understood why [This Much](https://csharp.today/log4net-tutorial-great-library-for-logging/) is needed just to write to a silly log file. Seems to me that these "tools" are just a solution looking for a problem. IMHO, WAY WAY WAY over-engineered.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
Above was mentioned thread safe, another gotya is running multiple instances of the same prog. BTW:
Kevin Marois wrote:
've never understood why This Much is needed just to write to a silly log file
If the log file is silly, why log anything.
Sin tack ear lol Pressing the any key may be continuate
-
So I'm looking at NLog and Log4net. Why in the world does logging need to be so blasted complicated??? Now I'm sure some of you would say "Log4Net or NLog isn't complicated", but at the most basicl level, what's wrong with this:
public class Logger
{
public static string LogFile { get; set; }static Logger() { if (string.IsNullOrEmpty(LogFile)) { var path = System.Reflection.Assembly.GetEntryAssembly().Location; LogFile = string.Format("{0}\\\\MyLogFile.txt", path); } } public static void Info(string message) { using (var sr = new StreamWriter(LogFile, true)) { sr.WriteLine(message); } }
}
I've never understood why [This Much](https://csharp.today/log4net-tutorial-great-library-for-logging/) is needed just to write to a silly log file. Seems to me that these "tools" are just a solution looking for a problem. IMHO, WAY WAY WAY over-engineered.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
-
So I'm looking at NLog and Log4net. Why in the world does logging need to be so blasted complicated??? Now I'm sure some of you would say "Log4Net or NLog isn't complicated", but at the most basicl level, what's wrong with this:
public class Logger
{
public static string LogFile { get; set; }static Logger() { if (string.IsNullOrEmpty(LogFile)) { var path = System.Reflection.Assembly.GetEntryAssembly().Location; LogFile = string.Format("{0}\\\\MyLogFile.txt", path); } } public static void Info(string message) { using (var sr = new StreamWriter(LogFile, true)) { sr.WriteLine(message); } }
}
I've never understood why [This Much](https://csharp.today/log4net-tutorial-great-library-for-logging/) is needed just to write to a silly log file. Seems to me that these "tools" are just a solution looking for a problem. IMHO, WAY WAY WAY over-engineered.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
-
For a simple application, what you posted may suffice. For complex, multi threaded services, the logging needs to be thread-safe, needs to be performant (even async), and may need to support multiple log listeners - and the target may be a text file, a database, azure storage, a web API, etc. That said, some of these logging frameworks kept adding features and now are unnecessarily complex, and may have reached a saturation point of over-engineering.
Nish Nishant Consultant Software Architect Ganymede Software Solutions LLC www.ganymedesoftwaresolutions.com
Nish Nishant wrote:
That said, some of these logging frameworks kept adding features and now are unnecessarily complex, and may have reached a saturation point of over-engineering.
Adobe is doing the same thing with Photoshop now. I hope it doesn't get worse, that's been one of my favorite apps for so many years. If it goes to crap it'll be a sad, sad day for computerland. :((
Jeremy Falcon
-
Nish Nishant wrote:
That said, some of these logging frameworks kept adding features and now are unnecessarily complex, and may have reached a saturation point of over-engineering.
Adobe is doing the same thing with Photoshop now. I hope it doesn't get worse, that's been one of my favorite apps for so many years. If it goes to crap it'll be a sad, sad day for computerland. :((
Jeremy Falcon
I don't have it yet but the personal use subscription is quite affordable. 10 bucks a month gives you Photoshop and a couple other tools I think. You never really own it though - just a lease.
Nish Nishant Consultant Software Architect Ganymede Software Solutions LLC www.ganymedesoftwaresolutions.com
-
So I'm looking at NLog and Log4net. Why in the world does logging need to be so blasted complicated??? Now I'm sure some of you would say "Log4Net or NLog isn't complicated", but at the most basicl level, what's wrong with this:
public class Logger
{
public static string LogFile { get; set; }static Logger() { if (string.IsNullOrEmpty(LogFile)) { var path = System.Reflection.Assembly.GetEntryAssembly().Location; LogFile = string.Format("{0}\\\\MyLogFile.txt", path); } } public static void Info(string message) { using (var sr = new StreamWriter(LogFile, true)) { sr.WriteLine(message); } }
}
I've never understood why [This Much](https://csharp.today/log4net-tutorial-great-library-for-logging/) is needed just to write to a silly log file. Seems to me that these "tools" are just a solution looking for a problem. IMHO, WAY WAY WAY over-engineered.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
pencil and paper. when an error happens, write it down. Simples. :-D
-
I don't have it yet but the personal use subscription is quite affordable. 10 bucks a month gives you Photoshop and a couple other tools I think. You never really own it though - just a lease.
Nish Nishant Consultant Software Architect Ganymede Software Solutions LLC www.ganymedesoftwaresolutions.com
Yeah totally, and they allow you to use it on more than one computer, so it's not too shabby. But when you start using the new version (CC 2017) it just starts to seem like the new crap is just too much and is distracting. And I've always used Photoshop as an example of a simple, clean yet powerful UI design. Not so much now.
Jeremy Falcon
-
I disagree. When you have code running in production it;s usually more difficult to diagnose what's happening, so logging gives you an advantage.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
Me thinks you misunderstood. By "the framework" he's referencing "the Logging framework", not logging in general.
#SupportHeForShe Government can give you nothing but what it takes from somebody else. A government big enough to give you everything you want is big enough to take everything you've got, including your freedom.-Ezra Taft Benson You must accept 1 of 2 basic premises: Either we are alone in the universe or we are not alone. Either way, the implications are staggering!-Wernher von Braun
-
pencil and paper. when an error happens, write it down. Simples. :-D
The old methods work best. I have heard that's how Google handles its internal search service logging. They have a team of 100 people with writing pads and pencils. :-D
Nish Nishant Consultant Software Architect Ganymede Software Solutions LLC www.ganymedesoftwaresolutions.com