Server Event Log Dashboard

Let’s say server logs are good. Will the ability to load libraries in code become a larger risk. :thinking:

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.

1 Like

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.

3 Likes

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.

2 Likes

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.

1 Like

This is me forgetting everything is run in Azure, so of course the licensing would go up :rofl:

Or maybe container? :thinking:

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. :dizzy_face:

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.

1 Like

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 :slight_smile:

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.

image

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.

1 Like

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                                    

3 Likes

This is awesome. Just loaded it up on our Pilot DB.

1 Like

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.

1 Like

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.

Files from original post

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);
   
3 Likes

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 :smiley:

1 Like

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# :smiley: 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