2009-10-22 4 views
1

내 서버에 예외를보고하는 프로그램이 있습니다. 예외가 발생하면 현재 세션의 전체 로그를 보내고 싶습니다. 이것은 버그 보고서이므로 작업 당 하나 또는 두 개의 문자가있는 깔끔한 작은 데이터 스트림으로 압축하고 싶습니다. 작업의 예는 다음과 같습니다. 파일 메뉴 클릭, 새 스프레드 시트 열기, 현재 작업 영역 저장. 한 가지 방법은 알파벳의 각 문자가 특정 동작을 나타내는 경우 키를 작성한 다음 내 서버에서 해당 문자를 디코딩하는 것입니다. 로그를 문자열에 추가하고 싶다면 문제가 될 수 있습니다. (예 : 파일 "example.txt"열기) 크기를 희생하지 않고 인코딩/디코딩을 자동화하는 더 많은 객체 지향 접근 방식이 있습니까? 나는 여기에서 브레인 스토밍을 할 뿐이므로 어떠한 제안이나 권고도 환영합니다. 감사합니다.C#으로 로그인하기위한 대화 형 방법 #

+0

사용자의 개인 정보를 고려해 보시기 바랍니다. 예외가 발생하기 직전에 사용자가 암호를 입력하면 어떻게 될까요? 나는 그녀가 오히려 불행한 추락 한 응용 프로그램의 개발자가 단지 그녀의 패스워드의 일부를 얻었음을 알았다. – Rom

답변

4

"크기 의식"이 필요한지 여부를 고려 했습니까? 다음은 일부 측정 항목에 대한 설명입니다.

하루에 1000 개의 오류가 있다고 가정하고 각 오류가 1k 개의 데이터를 차지한다고 가정합니다. 하루에 약 1MB입니다. 예를 들어 약 350MB의 오류보고가있을 것입니다. 승인.

그들은 가상의 숫자입니다. 그러나 어떤 경우에도 그러한 통계는 나에게 사소한 것처럼 보입니다. 특히 지나치게 과장된 것이기 때문입니다. 하루에 1000 개가 넘는 오류 이벤트가 예상됩니까? 개별 오류가 1k보다 커야합니까? 임베디드 장치에 로깅하고 있습니까? 아마도 그렇지 않습니다.

+1

나는 동일하다고 생각했다 –

+0

@Andre : 나는 당신의 포스트도 좋아했다. 아아, 나는 그날 투표에서 벗어났다. :-( –

3

내 의견은 다음과 같습니다

당신은 일반적으로 어떤 목적을 위해 예외를 사용할 수 있지만 서버에 대한 예외를 보내 고려로, 당신은 프로그래밍 오류를 나타내는 예외를 사용하고있을 수 있습니다, 즉, 네가 걱정할 것 같아.

이러한 종류의 예외는 드물기 때문에 소프트웨어에 12 개가 없으며 하루에 여러 번 던질 것입니다. 그렇다면 왜 서버에 보내는 정보를 너무 많이 압축해야합니까? 왜 일부 log4net 로깅과 함께 호출 스택을 GZIP하지 않고 서버로 보냅니 까? 시간을 절약 할 수 있습니다.

0
내가 행동

가장 쉬운 것은 당신이 어떤 편리하게 원하는 것을 저장하는 것입니다

당 하나 개 또는 두 개의 문자로 단정 한 작은 데이터 스트림에 응축하고 싶습니다

(예 : 일반 텍스트) 형식으로, 다음 몇 가지 표준 압축 도구를 사용하여 압축 : 압축 알고리즘이 압축하는 방법을 알아 봅시다.

0

커맨드 패턴과 영구 백그라운드 스레드를 처리에 들어오는 모든 개체에 대해 .Execute() 메서드를 호출하는 루프에 배치하면됩니다. db 쓰기, 더 쉽게 배치 db 쓰기를 조절할 수있는 이점을 얻고 심지어 bcp를 사용하여 데이터를 전송할 수도 있습니다. 이전 예외 정보도 항상 보관/삭제할 수 있습니다.