2013-03-15 8 views
2

팀에서 다양한 관리 작업에 사용하는 도구가 있으며 다양한 원격 호출, Active Directory 조회, 전화 스크립트 등을 처리하여 수천 대의 컴퓨터를 지원합니다. 나는 그것을 적극적으로 사용하는 약 12 ​​명의 사람들을 가지고 있지만 geekdom과 발전을 위해서 나는 어떤 통계와 사용량 로깅 (개인적으로, 단지 사용 된 것과 얼마나 많은 것을보기 위해)을 만들고 싶습니다.사용 로깅을위한 .NET 모범 사례 - 텍스트 파일? 데이터 베이스?

내 질문에,이 정보를 기록하는 .NET (C# 구체적)에서 좋은 (또는 최상의) 방법은 무엇입니까?

내 첫 번째 생각은 TXT 파일 또는 XML 파일 이었지만, 실제로 길을 모르는 채로 알 수없는 크기의 파일을로드하고 싶지는 않습니다. 그래서 SQLite에 대해 생각했지만 각 컴퓨터에 .SQlite를 설치하고 싶지는 않습니다. 아마도 exe 파일에 포함시킬 수 있지만 (공유에서 실행합니다. 설치 패키지가 내장되어 있지만 대부분의 사용자가 설치할 수 없습니다.) . 그것은

내가 정말 깨끗한 폴더를 위해, 텍스트 파일을 많이 사용하지 않는

다음 기준을 충족 할 어떤 제안 :.

  1. 가벼운 무게
  2. 빠름
  3. 에 대한 클라이언트
  4. 안정 하드를 손상
  5. 나는이 구글하려고하지만, 내가 알고하지 않았다 아마이었다 정말 이해가 만든 아무것도 못하고 있었다

같은 로컬 데이터베이스 것을 나는 이것이 전형적인 사용 모델이 아니기 때문에 나는 구글이어야한다.

+0

이것은 실제로 우리가 여기서 말하는 데이터 볼륨에 따라 달라집니다 – thumbmunkeys

+1

아마도 Microsoft는 Microsoft SQL Server Compact 4.0을 사용할 수 있습니다. http://www.microsoft.com/en-us/download/details.aspx?id=17876 –

+0

필드 사용 된 함수의 사용 횟수, 실패한 Active Directory 검색 (대다수 검색 속도를 높이기 위해 의도적으로 실패한 와일드 카드 및 FindOne 접근 방식을 허용합니다.) 또한 일부 항목에 시간 추적이 필요하므로 모든 통계에 대해 데이터가 표준화되지 않습니다. –

답변

2

Microsoft SQL Server Compact은 .NET 용 API가 포함 된 무료, 재배포 가능 embeddable 데이터베이스 엔진입니다. 설치할 필요가 없습니다. .NET 프로젝트에서 데이터베이스 엔진 라이브러리에 대한 참조 만 작성하면됩니다. 데이터베이스는 어디서나 저장할 수 있고 다른 것과 같이 이동할 수있는 단순한 파일입니다.

"실제"SQL Server와 매우 비슷하므로 필요할 때 사용할 수 있도록 두 데이터베이스 간의 데이터 마이그레이션이 쉬워야하며이를 지원할 수있는 도구가 많이 있습니다.

+0

지금 페이지를보고 있는데 아마도 두 가지 가능한 문제가있을 것입니다. 1. 클라이언트에 새로 설치된 것이 필요합니까? 2. 응용 프로그램/폴더에 임베드되어 있다고 표시됩니까? 따라서 데이터가있는 사람의 공유가 실행되면? 이상하게도 쉽게 복구 할 수있는 컴퓨터/사용자 정보 당 필요합니다. –

+0

3.5가 이미 설치되어 있으므로 DB가 실제로 상주하는 방식으로 보류 중일 수 있습니다. –

+0

1. 데이터베이스 엔진은 DLL로 구현됩니다. 응용 프로그램 바이너리의 일부로 해당 DLL을 재배포해야합니다. 원한다면 공유에 넣을 수 있습니다. 하지만 설치가 필요 없습니다. – CesarGon

2

db4o을 사용할 수 있습니다. 오브젝트를 직접 저장하는 오브젝트 지향 데이터베이스 (SQL이 아님)입니다. 오브젝트 맵핑, 속성 또는 구성 오버 헤드가 필요하지 않으며 POCO를 가져 와서 저장하십시오. 예제를 통한 쿼리 또는 Hibernate의 조건과 유사한 SODA와 같은 쿼리에 대해 서로 다른 접근법을 사용할 수 있으며 전체 LINQ 지원을 제공합니다. db4o를 임베디드 데이터베이스 (파일 사용)로 사용할 수 있습니다. 메모리 공간은 매우 작습니다. 설치할 필요가 없습니다. lib를 프로젝트에 포함하십시오.

예 :

var persons = db.Query<Person>(s => s.Age > 50); 
+0

이것 역시 살펴볼 것이다. –

0

사용 Log4Net하고 응용 프로그램에서 데이터 싱크 (들)을 분리. Log4Net을 사용하면 파일, 데이터베이스, Windows 이벤트 로그 등에 로그 할 수 있습니다. 로깅 레벨 (치명적, 오류, 경고, 정보 등) 및 기타 필터 기준에 따라 로그 출력을 제공 할 어셈블리/클래스에 따라 다른 대상으로 로그 출력을 보낼 수도 있습니다.

필요한 것을 수행하기 위해 자신의 appender를 작성할 수도 있습니다.

모두 당신의 log4net 구성을 변경합니다. 앱이 실행되는 동안 log4net 구성을 조정할 수도 있습니다. 예를 들어, 로깅이 설정된 장기 실행 데몬이 앱 전반에 걸쳐 상당히 높은 수준의 메시지를 잡아낼 수 있다고 가정 해보십시오. 갑작스럽게 로그에 기록 된 오류가 갑자기 증가한 것을 보여 주면, 로그 기록을보다 세분화 된 수준으로 돌리면 무슨 일이 일어나는지 알 수 있습니다. 또는 의심되는 클래스 나 어셈블리에서 매우 세부적인 수준으로 전화를 걸어 문제의 세부 정보를 격리 할 수 ​​있습니다.

log4net을 사용하면 구성 파일을 조정하고 데몬을 수신 거부하지 않고도이 작업을 수행 할 수 있습니다.