Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调试、信息等中的app.config_C#_Debugging_Logging_App Config_Log Level - Fatal编程技术网

C# 调试、信息等中的app.config

C# 调试、信息等中的app.config,c#,debugging,logging,app-config,log-level,C#,Debugging,Logging,App Config,Log Level,我对C#中的app.config有问题 我用key和value=DEBUG编写了一个app.config,同时在main中编写了 DEBUG,INFO,WARN AND ERROR. 问题是该值不起作用,它在不考虑级别的情况下将main打印到我的日志中 这是我的应用程序配置: <?xml version="1.0"?> <configuration> <appSettings> <add key="FolderName" value="C:\Users

我对C#中的
app.config
有问题

我用
key
value=DEBUG
编写了一个
app.config
,同时在
main
中编写了

DEBUG,INFO,WARN AND ERROR.
问题是该值不起作用,它在不考虑级别的情况下将
main
打印到我的日志中

这是我的应用程序配置:

<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="FolderName" value="C:\Users\mpilas\Desktop\logs\" />
<add key="FileSize" venter code herealue="10240" />
<add key="LogNameType" value="Date"/> <!--Value can be Size or "Date" -->
<add key="Level" value='DEBUG'/>
</appSettings>
</configuration>
我还有一个名为
:LogWriter
的类

namespace ConsoleApplication8 {
    public enum Severity { ERROR, WARNING, INFO, DEBUG };

    public class LogWriter {
        private static string _folder = ConfigurationManager.AppSettings["FolderName"];
        private static long _fileSize = int32.Parse(ConfigurationManager.AppSettings["FileSize"]);
        private static string kindOfType = ConfigurationManager.AppSettings["LogNameType"];

        static LogWriter() {}

        private static string GetFileNameByDate() {
            string dateName= DateTime.Now.ToString("yyyy-MM-dd");
            return  _folder + dateName + ".log";
        }

        private static string GetFileNameBySize() {
            string name = "";
            int counter = 0;

            do {
                if (counter == 0) { name = _folder + kindOfType + ".log"; }
                else {name = _folder + kindOfType + "-" + counter + ".log"; }
                if (File.Exists(name) {
                    counter++;
                    FileInfo realFile = new FileInfo(name);
                    if (realFile.Length > _fileSize) { 
                        name = _folder + kindOfType + "-" + counter + ".log";
                    }
                    else { break; }
                }
                else { break; }
            } while (true);
            return name;
        }


        private static string GetFileName() {
            clearFiles();
            if(kindOfType == "Size") { return GetFileNameBySize(); }
            else { 
              if(kindOfType == "Date") { return GetFileNameByDate(); }
            }
            return "";
        }

        public static void Write(string messgae, Severity severity) {
            try {
                string file = GetFileName();
                StreamWriter log = new StreamWriter(file, true);
                log.WriteLine(DateTime.Now.ToString() + " " + severity.ToString() + ": [" + messgae + "]");
                log.Flush();
                log.Close();
            }
            catch (Exception) {}
        }

        private static void clearFiles() {
            string[] files = Directory.GetFiles(_folder);
            foreach (string file in files) {
                FileInfo fi = new FileInfo(file);
                if (fi.LastAccessTime < DateTime.Now.AddDays(-14)) { fi.Delete(); }
            }
        }
    }
}
命名空间控制台应用程序8{
公共枚举严重性{错误、警告、信息、调试};
公共类日志编写器{
私有静态字符串_folder=ConfigurationManager.AppSettings[“FolderName”];
私有静态long_fileSize=int32.Parse(ConfigurationManager.AppSettings[“fileSize]”);
私有静态字符串kindOfType=ConfigurationManager.AppSettings[“LogNameType”];
静态日志编写器(){}
私有静态字符串GetFileNameByDate(){
字符串dateName=DateTime.Now.ToString(“yyyy-MM-dd”);
返回_folder+dateName+“.log”;
}
私有静态字符串GetFileNameBySize(){
字符串名称=”;
int计数器=0;
做{
如果(计数器==0){name=_folder+kindOfType+“.log”;}
else{name=_folder+kindOfType+“-”+counter+“.log”;}
if(File.Exists)(名称){
计数器++;
FileInfo realFile=新FileInfo(名称);
如果(realFile.Length>\u fileSize){
名称=_文件夹+种类类型+“-”+计数器+“.log”;
}
else{break;}
}
else{break;}
}虽然(正确);
返回名称;
}
私有静态字符串GetFileName(){
clearFiles();
if(kindOfType==“Size”){return GetFileNameBySize();}
否则{
if(kindOfType==“Date”){return GetFileNameByDate();}
}
返回“”;
}
公共静态无效写入(字符串消息、严重性){
试一试{
string file=GetFileName();
StreamWriter日志=新StreamWriter(文件,true);
log.WriteLine(DateTime.Now.ToString()+“”+severity.ToString()+“:[“+messgae+”]);
log.Flush();
log.Close();
}
捕获(异常){}
}
私有静态void clearFiles(){
string[]files=目录.GetFiles(\u文件夹);
foreach(文件中的字符串文件){
FileInfo fi=新的FileInfo(文件);
如果(fi.LastAccessTime

我应该如何处理
key=level
及其在我的应用程序中的价值?

您最好使用
系统中提供的现有日志支架。诊断
-实现您自己的,它可以处理您14天的滚动日志等,然后您只需通过
app.config
注册跟踪侦听器,然后使用配置文件配置跟踪级别

请注意,支持代码中的
traceSwitch
实例由
配置字段控制




您好,欢迎来到StackOverflow!您的问题中没有提供足够的详细信息供其他人回答:实际执行
严重性
值的代码将位于
LogWriter
类中。如果您想得到有用的答案,您可能应该添加该类。@MorPilas:您不应该破坏您的wn内容。
namespace ConsoleApplication8 {
    public enum Severity { ERROR, WARNING, INFO, DEBUG };

    public class LogWriter {
        private static string _folder = ConfigurationManager.AppSettings["FolderName"];
        private static long _fileSize = int32.Parse(ConfigurationManager.AppSettings["FileSize"]);
        private static string kindOfType = ConfigurationManager.AppSettings["LogNameType"];

        static LogWriter() {}

        private static string GetFileNameByDate() {
            string dateName= DateTime.Now.ToString("yyyy-MM-dd");
            return  _folder + dateName + ".log";
        }

        private static string GetFileNameBySize() {
            string name = "";
            int counter = 0;

            do {
                if (counter == 0) { name = _folder + kindOfType + ".log"; }
                else {name = _folder + kindOfType + "-" + counter + ".log"; }
                if (File.Exists(name) {
                    counter++;
                    FileInfo realFile = new FileInfo(name);
                    if (realFile.Length > _fileSize) { 
                        name = _folder + kindOfType + "-" + counter + ".log";
                    }
                    else { break; }
                }
                else { break; }
            } while (true);
            return name;
        }


        private static string GetFileName() {
            clearFiles();
            if(kindOfType == "Size") { return GetFileNameBySize(); }
            else { 
              if(kindOfType == "Date") { return GetFileNameByDate(); }
            }
            return "";
        }

        public static void Write(string messgae, Severity severity) {
            try {
                string file = GetFileName();
                StreamWriter log = new StreamWriter(file, true);
                log.WriteLine(DateTime.Now.ToString() + " " + severity.ToString() + ": [" + messgae + "]");
                log.Flush();
                log.Close();
            }
            catch (Exception) {}
        }

        private static void clearFiles() {
            string[] files = Directory.GetFiles(_folder);
            foreach (string file in files) {
                FileInfo fi = new FileInfo(file);
                if (fi.LastAccessTime < DateTime.Now.AddDays(-14)) { fi.Delete(); }
            }
        }
    }
}
private static TraceSwitch traceSwitch = new TraceSwitch("TraceLevelSwitch", null);

private static void LogInfo(string message)
{
    if(traceSwitch.TraceInfo)
        Trace.TraceInformation(message);
}