2011-03-06 10 views
8

मैं एक एसक्यूएल सम्मिलित करें बयान के बजाय एक संग्रहीत प्रक्रिया का उपयोग कर जब एक सी # वेब अनुप्रयोग में NLog का उपयोग कर एक समस्या का एक सा हो रहा है पर NLog में प्रक्रिया संग्रहित का उपयोग करना। कनेक्शन स्ट्रिंग "लॉगर" को Web.config में सही तरीके से कॉन्फ़िगर किया गया है और SQL कथन के साथ कमांडटेक्स्ट को प्रतिस्थापित करते समय ठीक से काम करता है। मैं सही दिशा में एक संकेत की सराहना करता हूं। इस उदाहरण में संग्रहित प्रक्रिया "लॉग" स्कीमा के अंतर्गत है और इसे "लॉगइरर" कहा जाता है।एक डाटाबेस लक्ष्य

<targets> 
    <target xsi:type="Database" 
     name="dberrorlog" 
     connectionStringName="Logger" 
     keepConnection="true" 
     commandText="[Logs].[LogError]" > 
     <parameter name="@ProgName" layout="MyAppName"/> 
     <parameter name="@CompName" layout="${machinename}"/> 
     <parameter name="@LogLevel" layout="${level}"/> 
     <parameter name="@UserName" layout="${identity}"/> 
     <parameter name="@Error" layout="${exception:format=Message}"/> 
     <parameter name="@SourceObj" layout="${exception:format=Method}"/> 
     <parameter name="@StackTrace" layout="${exception:format=StackTrace}"/> 
</target> 
</targets> 
<rules> 
    <logger name="*" minlevel="Error" writeTo="dberrorlog" /> 
</rules> 

उत्तर

10

इस NLog forum post से, संग्रहीत प्रक्रिया निष्पादित करने के लिए पाठ का उपयोग कर प्रयास करें:

commandtext="exec AddActivityLog 
          @ApplicationName, 
          @ApplicationTime, 
          @Severity, 
          @Logger, 
          @SaxoID, 
          @EventID, 
          @Message, 
          @URL, 
          @URLReferrer, 
          @RemoteAddress, 
          @Callsite, 
          @CurrentUICulture, 
          @ThreadIdentity, 
          @WindowsIdentity, 
          @MachineName, 
          @ProcessID, 
          @ThreadID, 
          @ThreadName, 
          @Stacktrace, 
          @Exception, 
          @Cookie, 
          @FormVariables, 
          @QueryString, 
          @HTTPUserAgent" 

साइड नोट: क्लॉस Rathje का जवाब अपने ब्राउज़र में प्रस्तुत करना नहीं होता, तो मैं एक देखने के लिए किया था उन्होंने पोस्ट कॉन्फ़िगरेशन देखने के लिए पृष्ठ स्रोत।

+0

धन्यवाद, यह चाल है। मेरे साथ ऐसा नहीं हुआ कि मैं सिर्फ exec को कॉल कर सकता हूं। आंतरिक रूप से यह sp_executesql – Diego

+0

@adrift को कॉल कर रहा है NLog फ़ोरम पोस्ट का लिंक अब अनावश्यक है। – chridam

1

ध्यान दें कि @ JeffOgata के समाधान काम करता है, जबकि, यह शायद नहीं जिस तरह से आप समस्या को हल करने के बारे में जाने के लिए चाहते हैं।

आप इस के बजाय की तरह कुछ कर सकते हैं:

commandText="AddActivityLog" 
commandType="StoredProcedure" 

इस तरह आप के बारे में ठीक से चिंता करने की एक EXEC क्वेरी स्वरूपण नहीं है।

+0

पारित होने वाले पैरामीटर के बारे में क्या? – JoshYates1980

संबंधित मुद्दे