Let’s say server logs are good. Will the ability to load libraries in code become a larger risk.
But this may be a big win if Epicor provides a way to get access to the logs and filter them out by tenant if necessary.
Let’s say server logs are good. Will the ability to load libraries in code become a larger risk.
But this may be a big win if Epicor provides a way to get access to the logs and filter them out by tenant if necessary.
We’ve had that ability for a long time. If reflection were taken away, a LOT of advanced code
customizations would become very very difficult to work around.
I’d hope if they decided something was a risk, it would be limited to specific exceptions.
IMO, Public Cloud should be one tenant per VM. It’s better for management and security.
The licensing cost should not go up, as DataCenter should supply unlimited VMs.
The hardware cost would go up, but the management cost should come down.
Also better for security, with the isolation.
These are conversations above my paygrade though.
Yes, @Mark_Wonsil for debugging and tracing this into nice neat rows dumping all of the print requests would be awesome. Below is just from my start activity and without any write events.
This is me forgetting everything is run in Azure, so of course the licensing would go up
Or maybe container?
Last year I asked if the application server could run in Windows Server Core and the answer was:
…Epicor does not support installation on Microsoft Server Core, as its limited set of server roles lacks support for the full range of server roles necessary for Epicor products.
I’m sure they’re working on containers though, so maybe eventually.
That would be awesome.
Certainly cut down some management. Maybe.
Shouldn’t be too difficult. If I get bored I might try it. Assuming I don’t forget.
The where clause parser should be useful as is, or with little mods.
Just got to work up some parsing on the logs themselves to get them into fields.
Ok, I finally found my ServerLog.
It only has one entry in it. (An error I had on the 23 of Dec) So I don’t really have a lot to work with.
I need some schooling on how to get more entries in it, and maybe some sample data.
@klincecum Probably Verbose would be enough. These are what I have set. Yes, I log a lot
I know the PDT tool does analysis on this log, so I am going to use DNSpy to see if I can find the routine.
I’m a cloud customer, I don’t have access to that. I need something that puts traces in with
whatever is default. I only have the client side trace settings.
No worries. I still think I can take what you built and make a tool that will save me a lot of debugging time.
I wonder if you can see the server side Epicor logs or if they even use 'em for Cloud clients. We’re not MT so can do some custom code, I think there are still some restrictions, but this could work for us.
This will work in the cloud as long as you can use custom code.
Ice.Diagnostics.Log.WriteEntry(“Your Message”); is available in “Epicor App Server”
Here is the actual Event Logs You have access to: (Use the “Log” Name for the EventLogName)
Log: Application DisplayName: Application MinRetention: 0 MaxKB: 20480
Log: Epicor App Server DisplayName: Epicor App Server MinRetention: 7 MaxKB: 512
Log: Epicor ICE Task Agent Service DisplayName: Epicor ICE Task Agent Service MinRetention: 7 MaxKB: 10240
Log: Epicor Software Corporation Client Log DisplayName: Epicor Software Corporation Client Log MinRetention: 7 MaxKB: 4194240
Log: HardwareEvents DisplayName: Hardware Events MinRetention: 0 MaxKB: 20480
Log: Internet Explorer DisplayName: Internet Explorer MinRetention: 7 MaxKB: 512
Log: Key Management Service DisplayName: Key Management Service MinRetention: 0 MaxKB: 20480
Log: Operations Manager DisplayName: Operations Manager MinRetention: 0 MaxKB: 15360
Log: Qualys DisplayName: Qualys MinRetention: 7 MaxKB: 10
Log: System DisplayName: System MinRetention: 0 MaxKB: 20480
Log: Windows Azure DisplayName: Windows Azure MinRetention: 7 MaxKB: 512
Log: Windows PowerShell DisplayName: Windows PowerShell MinRetention: 0 MaxKB: 15360
This is awesome. Just loaded it up on our Pilot DB.
When I get some free time, I’ll upload an updated version with the Event Log as a dropdown combo with what you have access to.
Update for Dropdown modification:
Edit: First post updated above.
Here are the two files that changed:
The customization on the dashboard, and an additional query.
App.KEV_EventLog.MainController_Customization_EventLogV1_CustomExport.xml (285.6 KB)
KEV_EventLogList.baq (20.3 KB)
Query Info:
/*
* Disclaimer!!!
* This is not a real query being executed, but a simplified version for general vision.
* Executing it with any other tool may produce a different result.
*/
select
(null) as [Calculated_EventLogName],
(null) as [Calculated_DisplayName]
Query Code on GetList:
string retString = "";
string nl = Environment.NewLine;
result.Results.Clear();
//No reference available in "Usings & References - Assemblies", so we will load by reflection.
Assembly System_Diagnostics_EventLog = Assembly.Load("System.Diagnostics.EventLog");
Type typeEventLog = System_Diagnostics_EventLog.GetType("System.Diagnostics.EventLog");
MethodInfo methodGetEventLogs = typeEventLog.GetMethods().FirstOrDefault
(method => method.Name == "GetEventLogs"
&& method.GetParameters().Count() == 0);
IEnumerable<dynamic> eventLogs = (dynamic)methodGetEventLogs.Invoke(null, null);
List<ResultsUbaqRow> logRange = new List<ResultsUbaqRow>();
foreach(dynamic item in eventLogs)
{
try
{
//retString += $"Log: {item.Log.PadRight(40)} DisplayName: {item.LogDisplayName.PadRight(40)} MinRetention: {item.MinimumRetentionDays.ToString().PadRight(40)} MaxKB: {item.MaximumKilobytes.ToString().PadRight(40)} \n";
logRange.Add(new ResultsUbaqRow
{
Calculated_EventLogName = item.Log,
Calculated_DisplayName = item.LogDisplayName,
SysRowID = Guid.NewGuid(),
RowIdent = DateTime.Now.Ticks.ToString(),
RowMod = "A",
});
}
catch(Exception ex)
{
//Trying to read from "Security" Event Log, or another you do not have access to...
if(ex is System.Security.SecurityException)
{
//retString += ex.Message + nl;
}
}
}
result.Results.AddRange(logRange);
//if(!string.IsNullOrEmpty(retString)) InfoMessage.Publish(retString);
Can you have the LIKE ‘[.]NET’ and that period should stay and only give .NET items? Only way I found to get the [-] to work properly
I don’t understand. Maybe I need more coffee.
Was probably me I misread and my suggestion would only work if that was converted to SQL not under C# Similar to your idea [dot] could have been a trigger versus but after looking @ your code please disregard my earlier suggestion. Not sure would escaping the dot help like: \.NET