Hello,
I have an error which appears everytime in open my application (Smart Client in which I coded some plugins) :
2025-01-31 15:23:01.681+01:00 [ 1] DEBUG - Debug: MyItemsManager ():Init terminated
2025-01-31 15:23:02.064+01:00 [ 1] DEBUG - Error: LogClient ():Duplicate LogMessageDictionary for MyApp
2025-01-31 15:23:02.065+01:00 [ 1] DEBUG - Error: LogClient ():Duplicate LogMessageDictionary for MyApp
2025-01-31 15:23:02.067+01:00 [ 1] DEBUG - Error: LogClient ():Duplicate LogMessageDictionary for MyApp
2025-01-31 15:23:02.067+01:00 [ 1] DEBUG - Error: LogClient ():Duplicate LogMessageDictionary for MyApp
2025-01-31 15:23:02.327+01:00 [ 39] DEBUG - Debug: ServerStaus ():Connected to the event server.
2025-01-31 15:23:02.478+01:00 [ 1] DEBUG - ......Exception:VMO60325: Could not retrieve information for the security namespace. The namespace does not exist. Ã VideoOS.Platform.Util.Security.SecurityClientXPCO.HasPermission(Guid kind, String objectId, String actionId)
à VideoOS.Platform.Util.Security.SecurityClientXPCOWrapper.CheckPermission(Guid kind, String objectId, String actionId)
à VideoOS.Platform.Util.SecurityAccess.CheckPermission(Item item, String actionId)
à VideoOS.Plugins.Common.Permission.RolePermissionProvider.IsAllowedTo(String actionId)
2025-01-31 15:23:02.479+01:00 [ 1] DEBUG - Error: IsAllowedTo (RolePermissionProvider):Error checking GENERIC_READ permission on 34992814-0e16-4724-9975-9d73933cdddf
2025-01-31 15:23:03.887+01:00 [ 1] DEBUG - Debug: AxisOptimizer ():Metadata call status monitoring started for 0 devices
2025-01-31 15:23:03.938+01:00 [ 1] DEBUG - Debug: AxisOptimizer ():Metadata call status monitoring stopped
It seems to be issued by my AuditLogs, here is the code of my class Managing audit logs :
namespace Partner.Util
{
internal class AuditLogs
{
private const string _ChannelComponent = "MyChannel";
private const string _idChannelUnassignmentMessage = "ChannelUnAssignment";
private const string _idChannelAssignmentMessage = "ChannelAssignment";
private const string _tokenCategory = "TOKEN";
public static void RegisterAssignmentMessages()
{
Dictionary<string, LogMessage> messages = new Dictionary<string, LogMessage>
{
{
_idChannelAssignmentMessage,
BuildMessage(
id: _idChannelAssignmentMessage,
category: _tokenCategory,
message: Resources.LogMessageAssign,
relatedKind: Kind.Camera)
},
{
_idChannelUnassignmentMessage,
BuildMessage(
id: _idChannelUnassignmentMessage,
category: _tokenCategory,
message: Resources.LogMessageUnassign,
relatedKind: Kind.Camera)
}
};
RegisterMyMessages(version: "1.4", _ChannelComponent, messages);
}
public static void LogAssignCameraToChannel(string channelName, Guid cameraId)
{
Item camera = Configuration.Instance.GetItemConfiguration(MyDefinition.MyPluginId, MyDefinition.MyCameraKind, cameraId);
Dictionary<string, string> parms = new Dictionary<string, string>
{
["camera"] = camera.Name,
["canal"] = channelName
};
LogClient.Instance.AuditEntry(Resources.ApplicationName, _ChannelComponent,
_idChannelAssignmentMessage, camera, parms, PermissionState.Granted);
}
public static void LogUnassignCameraFromChannel(string channelName, Guid cameraId)
{
Item camera = Configuration.Instance.GetItemConfiguration(MyDefinition.MyPluginId, MyDefinition.MyCameraKind, cameraId);
Dictionary<string, string> parms = new Dictionary<string, string>
{
["camera"] = camera.Name,
["canal"] = channelName
};
LogClient.Instance.AuditEntry(Resources.ApplicationName, _ChannelComponent,
_idChannelUnassignmentMessage, camera, parms, PermissionState.Granted);
}
private const string _PTZComponent = "MyPTZ";
private const string _idPTZMessage = "PTZStart";
private const string _PTZCategory = "PTZ";
public static void RegisterPTZMessages()
{
Dictionary<string, LogMessage> messages = new Dictionary<string, LogMessage>
{
{
_idPTZMessage,
BuildMessage(
id: _idPTZMessage,
category: _PTZCategory,
message: Resources.LogPTZMessage,
relatedKind: Kind.Camera
)
}
};
RegisterMyMessages(version: "1.2", _PTZComponent, messages);
}
public static void LogPTZinitSession(MyChannelItem channel)
{
Item camera = Configuration.Instance.GetItemConfiguration(MyDefinition.MyPluginId, MyDefinition.MyCameraKind, channel.Camera.FQID.ObjectId);
Dictionary<string, string> parms = new Dictionary<string, string>
{
["canal"] = channel.Name,
["camera"] = camera.Name
};
LogClient.Instance.AuditEntry(Resources.ApplicationName, _PTZComponent, _idPTZMessage,
camera, parms, PermissionState.Granted);
}
private static void RegisterMyMessages(string version, string component, Dictionary<string, LogMessage> dictionary)
{
LogMessageDictionary logMessageDictionary =
new LogMessageDictionary(
Resources.LanguageFR,
version,
Resources.ApplicationName,
component,
dictionary,
Resources.AuditLogRessourceType);
LogClient.Instance.RegisterDictionary(logMessageDictionary);
}
private static LogMessage BuildMessage(string id, string category, string message, Guid relatedKind)
{
return new LogMessage()
{
Id = id,
Category = category,
Message = message,
Group = Group.Audit,
Severity = Severity.Info,
Status = Status.StatusQuo,
RelatedObjectKind = relatedKind
};
}
}
}
What I am doing wrong ?