2010-07-19 6 views
2

로그에 식별자로 ASP.net 응용 프로그램에 로그인 한 사람의 사용자 이름을 사용하여 데이터베이스에서 수행 한 모든 사용자 작업을 기록해야합니다.ASP.net 데이터 액세스 응용 프로그램에서 사용자 작업 추적

가장 쉬운 방법은 무엇입니까?

내 데이터 액세스 레이어를 호출 할 때마다 해당 호출과 사용자 이름의 매개 변수를 기록한 다음 호출 세부 정보를 테이블에 기록하는 새로운 "로그 이벤트"메서드를 호출해야한다고 생각합니다.

올바른 경로에 있습니까?

답변

0

여기서는 데이터베이스 계층에서 로깅을 수행하고 있습니다. 사용자가 삽입, 업데이트, 삭제 작업을 수행 할 때마다 트리거가 트리거되고 해당 필드의 작업이 기록 및 감사를 위해 기록됩니다. 아마 최선의 방법은 아니지만 작동합니다.

+0

테이블의 특정 열에 대해 동일한 작업을 수행했습니다. 약간의 트리거를 읽을 수 있습니다. 여기에 대한 약간의 정보를 읽을 수있는 두 개의 링크가 있습니다. http://www.sqlteam.com/article/an-introduction-to-triggers-part-i http://www.go4expert.com/forums /showthread.php?t=15510 –

+0

Flaktron에 동의해야합니다. 데이터베이스 상호 작용만으로 로그해야하는 경우 SQL 트리거를 사용하는 것이 가장 신뢰할 수있는 감사 추적 수단입니다. Imho : o) –

+0

이것은 모든 사용자가 자신의 사용자 이름으로 데이터베이스에 연결되어 있거나 2) 삽입, 업데이트 또는 삭제할 때마다 SQL 문에 사용자 이름이 포함되어있는 경우에만 작동합니다. 모든 웹 응용 프로그램 사용자 계정에 대해 단일 데이터베이스 사용자 계정을 통해 데이터베이스에 액세스하는 웹 응용 프로그램의 경우 트리거가 가장 쉬운 선택이 아닐 수 있습니다. – Thorin

1

트리거 사용, SQL을 사용하여 DAL에서 로그하거나 log4net을 사용하여 DAL에서 로그하는 세 가지 방법이 있습니다. 트리거를 사용하는 경우 트리거

를 사용

, 모든 테이블에 LastUser 열을 추가 할 열 (이 빈 문자열이 아니다 체크 제약 조건 즉, NULL NOT)가 필요했다. 트리거에서 코드에 사용할 수있는 LastUser 열이 있어야 누가 사람이 무엇을했는지 기록 할 수 있습니다. 당신은 당신이 사용하고있는 데이터베이스 시스템을 말하지 않습니다; 일부는 트리거를 지원하지 않거나 SELECT 트리거를 지원하지 않습니다 (실행중인 SELECT 문을 기록해야합니까?). 데이터베이스에 당신의 DAL에서 로그인하는 경우 SQL

를 사용 DAL에서

로그인 잘하면 모든 통화 코드의 일부 중앙 조각을 통해 이동합니다. 그렇다면 코드 섹션에서 단일 로깅 방법을 추가 할 수 있습니다. 로그와 실제 데이터가 동기화되지 않도록 트랜잭션의 모든 호출을 데이터베이스로 래핑하고 싶을 것입니다. Log4Net

를 사용 DAL에서

로그인 당신은 그냥 간단하게 모든 데이터 액세스를 기록하는 log4net을 설정할 수 있습니다. Log4net은 로그 항목을 로그 파일에 기록 할뿐만 아니라 데이터베이스에도 기록 할 수 있습니다. 기존 코드에 log4net을 추가하는 것은 쉽고 구성도 비교적 쉽습니다.

관련 문제