We are in need of C# classes to take care of the logging needs of our applications. The logging classes should contain the following:
1. Configuration file based on XML.
2. Ability to create logging levels for different needs (debug, info, error, etc.) These should be customizable, and completely dynamic in that we can create as many levels as needed.
3. Each logging level should be able to output to one or more output types individually. For example, debug may write to a file, while info writes to a separate file, or database. Output types would be configurable as well, but based on 4 output types:
1. Text File (file name configurable with certain meaningful tags such as date, etc.)
2. Database (through a connection string defined in the XML file) with output table/field definitions being configurable from this XML file. For example, we would like the ability to map the date/time to one field, the log string to a field, etc.
3. XML File (field names being configurable as in #2 along with the file name).
4. HTML File (file name being configurable as in #1 with the output being wrapped in a table).
4. Each level should be able to specify whether the output is done immediately, or upon checkpoints that we would call from our applications. All logs would be kept in memory until that checkpoint is called. This should be very efficient in memory handling and not waste a lot of memory.
5. Each level should have the ability to assign email addresses that would receive the file(s) created at that level upon a checkpoint that would be called from our code. This would normally be something at the end of our batch file processing applications, but should be able to be called at any point.
We require exception code and comments inside of that code. Strict object oriented coding techniques should be adhered to as well as conforming to our field naming standards.
## Deliverables
* Strict object oriented coding structure using Microsoft best practices
* Very good code documentation on any line that contains any logic and also on variable/member declarations as to what this variable holds
* Naming conventions used as follows:
* global class level members should start with an underscore
* local variables should have meaningful names and should start with upper case letters
* all global members should be accessible through properties and not through their variable declared as public
* all method parameters should start with lower case letters
* * *This broadcast message was sent to all bidders on Wednesday Nov 10, 2010 10:21:53 AM:
This project should involve complete code from scratch, no third party open source solutions will be accepted. All code must be original from the coder accepted.