2009-09-23 26 views
48

Tôi có một file app.config trống, nhưng tôi vẫn nhận được NHibernate bản ghi gỡ lỗiDisable NHibernate đăng

NHibernate: SELECT this_.LogID as LogID71_0_, this_.Level as Level71_0_, this_.Message as Message71_0_, this_.EventTime as EventTime71_0_, this_.Component as ... 

Tôi đã thử thêm một cấu hình log4net với một mức độ log LỖI, nhưng không sử dụng. Làm thế nào tôi có thể ngừng các thông điệp tường trình này?

Điều tôi thắc mắc là tại sao những điều này xuất hiện ngay từ đầu nếu tôi có app.config trống. Nó không có ý nghĩa với tôi rằng tôi phải cấu hình nó không in các messaages - mặc định nên được tắt. Nó có thể là mã của tôi được thiết lập chúng trên lập trình bằng cách nào đó? Tôi nên tìm gì?

+0

Như chúng ta có thể thấy, asnwer thực sự là cấu hình của log4net –

+1

thực sự, đó là showsql trong nHibernate .... – Dani

Trả lời

80

Configure Log4Net for use with NHibernate có thể hữu ích.

Bạn cần có cả những người khai thác gỗ:

<logger name="NHibernate"> 
    <level value="ERROR" /> 
</logger> 

<logger name="NHibernate.SQL"> 
    <level value="ERROR" /> 
</logger> 
+1

Không hoạt động, xem câu hỏi cập nhật (tôi đã thêm phần cấu hình log4net thích hợp, không có hiệu lực). – ripper234

+3

log4net thực sự khớp với tên logger bắt đầu bằng tên được chỉ định, vì vậy việc đặt "NHibernate" sẽ lọc ra mọi thông báo NHibernate. –

+0

Tôi nghĩ rằng bình luận của @ Ripper là không chính xác, điều này phù hợp với tôi và cũng với ActiveRecord –

1

Bạn có muốn vô hiệu hóa khai thác gỗ ở cấp NHibernate hoặc mức Log4Net?

Tôi đang làm việc trước bằng cách đặt biến "show_sql" thành false. Tôi đang làm điều này lập trình trong C# ngay bây giờ, nhưng tôi giả định điều này sẽ dễ dàng để đưa vào một tập tin cấu hình XML là tốt.

+0

Không hoạt động (http://www.beansoftware.com/asp.net-tutorials/nhibernate-log4net.aspx). Tại sao mặc định là hiển thị SQL? Nó có thể là mã của tôi bằng cách nào đó biến điều này một cách thực dụng? – ripper234

+0

Chỉ cần đi và kiểm tra mã của tôi. Tôi tắt nó bằng cách bình luận ra show_sql = true. Đừng bận tâm. Lấy làm tiếc. –

+0

Cảm ơn đã làm việc cho tôi. – Jonathan

0

Bạn đang sử dụng NUnit 2.4.6? Tôi đọc this bài đăng trên blog ngày hôm qua cho biết phiên bản NUnit này đặt log4net để sử dụng tính năng ghi mức độ DEBUG, cũng ảnh hưởng đến NHibernate.

nếu đó không phải là NUnit và không phải là bạn, tôi sẽ kiểm tra xem đó có phải là thư viện bên thứ ba khác mà bạn đang sử dụng hay không.

EDIT

Ngày nghĩ thứ hai, tôi không nghĩ rằng đầu ra có cái gì để làm với log4net. định dạng trông giống như đầu ra được kiểm soát "show_sql". Tôi sẽ kiểm tra hai điều: 1. Nếu chính xác (một với show_sql = false) hibernate.config được sao chép vào thư mục thực thi của bạn. 2. Nếu thuộc tính cấu hình show_sql không được ghi đè thủ công trong mã của bạn.

6

Sự cố ở đâu đó trong "mã của tôi". Chúng tôi xây dựng cấu hình NHibernate bằng tay (thiết lập cờ show_sql thành true).

12
return Fluently.Configure() 
      .Database(MsSqlConfiguration.MsSql2005.ConnectionString(
       c => c.FromConnectionStringWithKey("MyDB")).ShowSql()) 

Loại bỏ các .ShowSql() làm việc cho tôi

+0

Điều này đã giải quyết được vấn đề của tôi, cảm ơn! –

+0

Nhưng nếu tôi muốn xem sql, nhưng không phải trong giao diện điều khiển? –

2

Đối với tôi đó là vấn đề NUnit. Việc khai thác gỗ phụ đã xảy ra khi chạy các bài kiểm tra trong TeamCity đó phải được sử dụng một phiên bản khác của nunit

2

Các NHibernate bản ghi không giúp tôi nhiều ... Tôi thích những thiết lập tốt hơn:

<logger name="NHibernate"> 
     <level value="OFF" /> 
    </logger> 

    <logger name="NHibernate.SQL"> 
     <level value="OFF" /> 
    </logger>