Logging OCL in Turnkey
No edit summary
No edit summary
Line 5: Line 5:
[[File:SysLoggingView.png|none|thumb|554x554px]]
[[File:SysLoggingView.png|none|thumb|554x554px]]


<code>namespace ASPNETIdentity {
 
  using System;
 
  using System.Collections;
  public partial class SysLogging
  using System.Collections.Generic;
    {
  using System.ComponentModel;
      StringBuilder sb = new StringBuilder(100000);
  using System.CodeDom.Compiler;
      void Singleton_OnTraceLog(object sender, Eco.Logging.TraceEventArgs e)
  using Eco.ObjectImplementation;
      {
  using Eco.ObjectRepresentation;
        if (sb.Length > 5000000)
   using Eco.Services;
          sb.Clear();
  using Eco.Subscription;
        sb.AppendLine(e.Message);
   using Eco.UmlCodeAttributes;
      }
  using Eco.UmlRt;
 
   using System.Text;
      [UmlElement(Id = "ee54deb5-3024-47c2-be01-7c93faa6638a")]
  using Eco.Logging;</code>
      public void StartLogging()
      {
        this.StopLogging();
        EcoLogSwitches.LogOcl = this.LogOcl;
        EcoLogSwitches.LogEAL = this.LogEAL;
        EcoLogSwitches.LogPMapper = this.LogPMapper;
        EcoLogSwitches.LogSql = this.LogSql;
        EcoLogSwitches.LogSqlMeta = this.LogSqlMeta;
        EcoLogSwitches.LogActionExecute = this.LogActionExecute;
        EcoLogSwitches.LogActionEnable = this.LogActionEnable;
        EcoLogSwitches.LogMethods = this.LogMethods;
        EcoLogSwitches.CollectAssociationUsageStats = this.CollectAssociationUsageStats;
        EcoLogSwitches.LogWecpof = this.LogWecpof;
    
        EcoListener.Singleton.OnTraceLog += Singleton_OnTraceLog;
        EcoListener.StartListening();
      }
    
      [UmlElement(Id = "ace10ea6-8793-4205-a2eb-9f22b9391701")]
      public string GetLog()
      {
        string text = sb.ToString();
        sb.Clear();
        return text;
      }
    
      [UmlElement(Id = "3d2941f2-75ca-4a41-a5e8-465ddcfa2904")]
      public void StopLogging()
      {
        EcoListener.Singleton.OnTraceLog -= Singleton_OnTraceLog;
        Eco.Logging.EcoListener.StopListening();
      }
 
      [UmlElement(Id = "a4e7d189-a056-4be4-8e07-ea42d72505ac")]
      public string GetUsageStats()
      {
        StringBuilder stats = new StringBuilder();
        lock (EcoSupport.AssociationUsageStats)
        {
          if (EcoSupport.AssociationUsageStats.Count > 0)
          {
            foreach (KeyValuePair<string, int> x in EcoSupport.AssociationUsageStats)
            {
              stats.AppendLine(x.Key + " = " + x.Value.ToString());
            }
          }
          else
            stats.AppendLine("No stats in log");
        }
        return stats.ToString();
      }
    }
}

Revision as of 14:08, 16 July 2022

You can expand your TK app with OCL logging of your own making if you are using CodeDress.

SysLoggingClass.png
SysLoggingViewmodel.png
SysLoggingView.png


 public partial class SysLogging
   {
     StringBuilder sb = new StringBuilder(100000);
     void Singleton_OnTraceLog(object sender, Eco.Logging.TraceEventArgs e)
     {
       if (sb.Length > 5000000)
         sb.Clear();
       sb.AppendLine(e.Message);
     }
 
     [UmlElement(Id = "ee54deb5-3024-47c2-be01-7c93faa6638a")]
     public void StartLogging()
     {
       this.StopLogging();
       EcoLogSwitches.LogOcl = this.LogOcl;
       EcoLogSwitches.LogEAL = this.LogEAL;
       EcoLogSwitches.LogPMapper = this.LogPMapper;
       EcoLogSwitches.LogSql = this.LogSql;
       EcoLogSwitches.LogSqlMeta = this.LogSqlMeta;
       EcoLogSwitches.LogActionExecute = this.LogActionExecute;
       EcoLogSwitches.LogActionEnable = this.LogActionEnable;
       EcoLogSwitches.LogMethods = this.LogMethods;
       EcoLogSwitches.CollectAssociationUsageStats = this.CollectAssociationUsageStats;
       EcoLogSwitches.LogWecpof = this.LogWecpof;
 
       EcoListener.Singleton.OnTraceLog += Singleton_OnTraceLog;
       EcoListener.StartListening();
     }
 
     [UmlElement(Id = "ace10ea6-8793-4205-a2eb-9f22b9391701")]
     public string GetLog()
     {
       string text = sb.ToString();
       sb.Clear();
       return text;
     }
 
     [UmlElement(Id = "3d2941f2-75ca-4a41-a5e8-465ddcfa2904")]
     public void StopLogging()
     {
       EcoListener.Singleton.OnTraceLog -= Singleton_OnTraceLog;
       Eco.Logging.EcoListener.StopListening();
     }
 
     [UmlElement(Id = "a4e7d189-a056-4be4-8e07-ea42d72505ac")]
     public string GetUsageStats()
     {
       StringBuilder stats = new StringBuilder();
       lock (EcoSupport.AssociationUsageStats)
       {
         if (EcoSupport.AssociationUsageStats.Count > 0)
         {
           foreach (KeyValuePair<string, int> x in EcoSupport.AssociationUsageStats)
           {
             stats.AppendLine(x.Key + " = " + x.Value.ToString());
           }
         }
         else
           stats.AppendLine("No stats in log");
       }
       return stats.ToString();
     }
   }
}
This page was edited 136 days ago on 12/20/2023. What links here