Какое правильное регулярное выражение для извлечения ошибки нескольких строк с трассировкой исключения из файла журнала. Вот мой пример.
Verbose;MyComputer;07.02.2017 12:42:48,831;Area=;SubArea=;SessionId=;StepId;User=;Message=Repository CareProviderRepository:START GetCareProviderByZsrMethod with ZSR: H110702
Error;MyComputer;07.02.2017 12:42:51,409;Area=;SubArea=;SessionId=;StepId;User=;Message=Repository CareProviderRepository:Fail to get CareProviderMethod with Zsrnumber: H110702
Error;MyComputer;07.02.2017 12:42:51,933;Area=;SubArea=;SessionId=;StepId;User=;Message=Services:Exception: System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Data.SqlClient.SqlException: Invalid column name 'Name_DE'.
Invalid column name 'Name_FR'.
Invalid column name 'Name_IT'.
Invalid column name 'DefaultText'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
Verbose;MyComputer;07.02.2017 12:42:52,361;Area=;SubArea=;SessionId=;StepId;User=;Message=Business NetworkManager:START Get: Network with Code: 95; withNetworkMembers: False
Verbose;MyComputer;07.02.2017 12:42:52,369;Area=;SubArea=;SessionId=;StepId;User=;Message=Repository NetworkRepository:START Get: 95
Error;MyComputer;07.02.2017 12:42:51,933;Area=;SubArea=;SessionId=;StepId;User=;Message=Services:Exception: System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Data.SqlClient.SqlException: Invalid column name 'Name_DE'.
Invalid column name 'Name_FR'.
Invalid column name 'Name_IT'.
Invalid column name 'DefaultText'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
Verbose;MyComputer;07.02.2017 12:42:52,361;Area=;SubArea=;SessionId=;StepId;User=;Message=Business NetworkManager:START Get: Network with Code: 95; withNetworkMembers: False
Verbose;MyComputer;07.02.2017 12:42:52,369;Area=;SubArea=;SessionId=;StepId;User=;Message=Repository NetworkRepository:START Get: 95
Вот мое регулярное выражение: (Error;(?:.*\r?\n?)\s)
Это регулярное выражение выбирает только одну строку или ошибку. На самом деле мне нужно регулярное выражение, которое может выбрать мне 3 ошибки (первая ошибка - однострочная, а затем 2 ошибки - многострочные).
Мое регулярное выражение не экранирует CRLF или новую строку в конце строки ошибки.
Конечные границы для каждой записи: Debug;
, Verbose;
, Info;
или Error;
.
Любые предложения?
Error
s отVerbose
s: regex101.com/r/d67ua5 /1а> - person Oleksii Filonenko   schedule 11.07.2017;
тоже должен стоять послеError
. Во всяком случае, звучит довольно непонятно для меня. - person Wiktor Stribiżew   schedule 11.07.2017