임 .log 파일을 구문 분석을 시도하고 다음과 같습니다 그것의 일부를 입수했습니다 :LINEX에서 lineY C 번호를 읽는 방법
2014-03-31 13:20:42,046 DEBUG 4B414D00000001184917.GetConventionalDataTask - GetCompressedLogResponse received: GetCompressedLogResponse: Id = GetCompressedLog, LoggerType = LoadProfileLogger, NumberOfRegisters = 5, NewLogId = 3281, Info = HeadOfLoggerIncluded
LogID RealTimeClock Logger_Status Logger_Data_Quality EnergyA14 EnergyA23
[KamDateTimeStatus] [NoUnit] [NoUnit] [kWh] [kWh]
------ ---------------------- ------------- ------------------- --------- ---------
3264 02 2014-03-31T08:00:00 0000 00000000 0.17 0.00
3265 02 2014-03-31T08:15:00 0000 00000000 0.17 0.00
3266 02 2014-03-31T08:30:00 0000 00000000 0.17 0.00
3267 02 2014-03-31T08:45:00 0000 00000000 0.17 0.00
2014-03-31 13:20:42,049 DEBUG 4B414D00000001184917.GetConventionalDataTask - Updated timestamp for logger LoadProfileLogger with time 31-03-2014 12:20:42
가 어떻게 2 개 GetConventionalDataTask 라인 사이의 라인을받을 수 있나요 그래서 프로그램은 (GetCompressedLogResponse received :)를 포함하는 줄에서 (로거에 대한 업데이트 된 타임 스탬프)를 포함하는 줄을 읽는 것을 알고 있습니까?
public static bool IsLoggerStart(string text)
{
return text.Contains("GetCompressedLogResponse received:");
}
public static bool IsLoggerEnd(string text)
{
return text.Contains("Updated timestamp for logger");
}
public static string GetLoggerType(string text)
{
return GetSubStrings(text, "LoggerType = ", ", ").FirstOrDefault();
}
public static string GetNumberOfRegisters(string text)
{
return GetSubStrings(text, "NumberOfRegisters = ", ", ").FirstOrDefault();
}
public static string GetNewLogId(string text)
{
return GetSubStrings(text, "NewLogId = ", ", ").FirstOrDefault();
}
내가 만든 객체 :
class CompressedLogResponse
{
public LoggerAnnounce LoggerAnnounce { get; set; }
public List<int> LogID { get; set; }
public List<DateTime> RealTimeClock { get; set; }
public List<int> LoggerStatus { get; set; }
public List<int> LoggerDataQuality { get; set; }
public List<double> EnergyA14 { get; set; }
public List<double> EnergyA23 { get; set; }
}
class LoggerAnnounce
{
public string LoggerType { get; set; }
public int NumberOfRegisters { get; set; }
public int NewLogId { get; set; }
}
덕분에 어떤 도움을 당신이 제공 :
수있을를이 내가 얻을 수 있었던 얼마나 멀리입니다
죄송합니다. 끝에 GetConventionalDataTask를 포함시키고 싶었지만 정규식 패턴은 'Match m = Regex.Match (input, @ "GetConventionalDataTask \ s- \ s (. *) \ s이어야합니다. - 로거의 \ sUpdated 타임 스탬프 ", RegexOptions.Singleline); –