/* ======================================================================== * Copyright (c) 2005-2025 The OPC Foundation, Inc. All rights reserved. * * OPC Foundation MIT License 1.00 * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * The complete license agreement can be found here: * http://opcfoundation.org/License/MIT/1.00/ * ======================================================================*/ using System.Diagnostics.Tracing; namespace Opc.Ua.Server { /// /// The local EventSource for the server library. /// public static partial class ServerUtils { /// /// The EventSource log interface. /// internal static OpcUaServerEventSource EventLog { get; } = new OpcUaServerEventSource(); } /// /// Event source for high performance logging. /// [EventSource(Name = "OPC-UA-Server", Guid = "86FF2AAB-8FF6-46CB-8CE3-E0211950B30C")] internal sealed class OpcUaServerEventSource : EventSource { /// /// client event ids /// private const int kSendResponseId = 1; private const int kServerCallId = kSendResponseId + 1; private const int kSessionStateId = kServerCallId + 1; private const int kMonitoredItemReadyId = kSessionStateId + 1; /// /// A server call message, called from ServerCallNative. Do not call directly.. /// [Event( kServerCallId, Message = "Server Call={0}, Id={1}", Level = EventLevel.Informational)] public void ServerCall(string requestType, uint requestId) { if (IsEnabled()) { WriteEvent(kServerCallId, requestType, requestId); } } /// /// The state of the session. /// [Event( kSessionStateId, Message = "Session {0}, Id={1}, Name={2}, ChannelId={3}, User={4}", Level = EventLevel.Informational)] public void SessionState( string context, string sessionId, string sessionName, string secureChannelId, string identity) { if (IsEnabled()) { WriteEvent( kSessionStateId, context, sessionId, sessionName, secureChannelId, identity); } } /// /// The state of the server session. /// [Event( kMonitoredItemReadyId, Message = "IsReadyToPublish[{0}] {1}", Level = EventLevel.Verbose)] public void MonitoredItemReady(uint id, string state) { if (IsEnabled()) { WriteEvent(kMonitoredItemReadyId, id, state); } } } }