.NET simple logger SOI
This sample illustrates the basic framework for creating a server object interceptor (SOI). The SOI adds a message to the ArcGIS Server logs whenever a REST request is received before forwarding the request to the underlying default implementation.
Deploying the SOI from the .soe file (
..\bin\Release\NetSimpleLoggerSOI_ent.soe) does not require you to open Visual Studio. However, you can load the project (
..\NetSimpleLoggerSOI.csproj) in Visual Studio to debug, modify, and recompile the SOI code.
- How to audit requests in SOIs
Any dynamic map service published from ArcGIS Pro. This instruction uses the USA map service as the sample service to test with the SOI.
- Log in to ArcGIS Server Manager and click the Site tab.
- Click Extensions.
- Click Add Extension.
- Click Choose File and choose the NetSimpleLoggerSOI_ent.soe file (
- Click Add.
Make sure you have published the USA map service using ArcGIS Pro. If not, refer to USA map service
Log in to ArcGIS Server Manager and click the Services tab. Select USA map service and select Capabilities.
In the Interceptors section, select DotNet Simple Logger REST SOI Example in the Available Interceptors box and click the right arrow button to move it to Enabled Interceptors.
Click the Save and Restart button to restart the service.
- Set ArcGIS Server Log Level:
- Browse to ArcGIS Server Manager > Logs > View Logs page.
- Click the Settings button.
- Make sure you set Log Level to Fine (or any level below, such as Verbose or Debug). Click Save.
- Perform a REST service operation to trigger the SOI logging:
Open a browser and navigate to the REST services endpoint of the USA map service (URL:
Scroll to the bottom of the above page and click Export Map in Supported Extensions.
This leads you to the following URL:
- Check ArcGIS Server logs:
Browse to ArcGIS Server Manager > Logs > View Logs page.
Set the Log Filter to Fine (or any level below, such as Verbose or Debug) and click Query.
Now the SOI's log message "Request received in Server Object Interceptor for handleRESTRequest" for the operation accomplished in step 2 can be found: