Skip to content

VB -> C#: Non-compiling using directives removed #529

@GrahamTheCoder

Description

@GrahamTheCoder

Consolidated as a known limitation

Input code

Imports System.Collections.Specialized
Imports System.Configuration
Imports System.Net.Http
Imports System.Web
Imports DTS.Logging.MongoDB
Imports DTS.Logging.MongoDB.Configuration
Imports Serilog

''' <summary>
''' 
''' </summary>
''' <remarks></remarks>
Public Class LoggingDebugging

    Public Shared EnabledLogTypes As NameValueCollection = Util.GetConfigSection("Logging")
    Public Shared EnabledLogs As NameValueCollection = Util.GetConfigSection("enabledLogs")
    'Private Shared sempaphore As Object = New Object()
    ''' <summary>
    ''' Proxy method to set the LogInstance properties and add LogInstance class to LogBuffer
    ''' </summary>
    ''' <param name="logType"></param>
    ''' <param name="message"></param>
    ''' <param name="traceKey"></param>
    ''' <param name="user"></param>
    ''' <param name="TS"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function Log(ByVal logType As String, ByVal message As String, Optional ByVal traceKey As Long = Nothing, Optional ByVal user As String = Nothing, Optional ByVal TS As Long = Nothing) As Long

        Dim LogTS As Long

        If IsNothing(traceKey) Or traceKey = 0 Then
            Throw New ETDMSException(Util.t("traceKey must not be null. Please modify your method to either create a new " +
                                       "traceKey if it is the start of a request, or use an existing traceKey if it is " +
                                       "part of a request."))
        End If

        If LoggingDebugging.EnabledLogTypes(logType) = "True" Then

            Dim loginstance As New LogInstance(m_logType:=logType, m_message:=message, m_user:=user, m_TS:=TS)

            LogTS = LogAggregator.AddLogInstance(loginstance, traceKey)


        Else
            'If logType = "query" Then
            '    Dim LogEntry As New LogInstance(m_logType:=logType, m_message:=message, m_user:=user, m_TS:=TS)
            '    LogTS = LoggingDebugging.AddLogBuffer(Props:=LogEntry, traceKey:=traceKey)
            'End If
            LogTS = Now.Ticks()
        End If

        Return LogTS

    End Function



    ''' <summary>
    ''' Fluh out from Logbuffer
    ''' </summary>
    ''' <param name="userPin"></param>
    ''' <param name="traceKey"></param>
    ''' <remarks></remarks>
    Public Overloads Shared Sub FlushLog(ByVal userPin As String,
                                         Optional ByVal traceKey As String = Nothing,
                                         Optional ByRef esTime As String = Nothing,
                                         Optional ByRef request As HttpRequest = Nothing,
                                         Optional ByRef message As HttpRequestMessage = Nothing)

        Dim logitem As LogItem = Nothing
        LogAggregator.TryGet(userPin, logitem, traceKey, esTime, request, message)

    End Sub


    ''' <summary>
    ''' Converts ticks to Date and Time
    ''' </summary>
    ''' <param name="ticks"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function convertTickstoDateTime(ByVal ticks As Long) As String
        Dim dt As New DateTime(ticks)
        Return Format(dt, "MM/dd/yyy hh:mm:ss.fffffff")
    End Function

    ''' <summary>
    ''' Converts ticks to time
    ''' </summary>
    ''' <param name="ticks"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function convertTickstoTime(ByVal ticks As Long) As String
        Dim timespan As New TimeSpan(ticks)
        Return String.Format("{0}:{1}:{2}:{3}",
            timespan.Hours.ToString("D2"), timespan.Minutes.ToString("D2"),
            timespan.Seconds.ToString("D2"), timespan.Milliseconds.ToString("D3"))
    End Function

    ''' <summary>
    ''' Converts ticks to Date and Time with 24 hrs
    ''' </summary>
    ''' <param name="ticks"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function convertTickstoLongDateTime(ByVal ticks As Long) As String
        Dim dt As New DateTime(ticks)
        Return dt.ToString()
    End Function

    ''' <summary>
    ''' Reads configuration values for serilog
    ''' </summary>
    Public Shared Sub Configure()

        'Serilog.Log.Logger = New Serilog.LoggerConfiguration().ReadFrom.AppSettings().CreateLogger()

        Dim settings As StructuredMongoDBSettings = ConfigurationManager.AppSettings.MongoDBSettings()
        Serilog.Log.Logger = New Serilog.LoggerConfiguration() _
            .ReadFrom.AppSettings() _
            .Enrich.WithProperty("Application", "user-service-dev") _
            .Enrich.WithProperty("Stage", "local") _
            .WriteTo.StructuredMongoDB(settings) _
            .CreateLogger()

        Serilog.Log.Information("logger initialized")

    End Sub

End Class

Erroneous output

using System;
using System.Net.Http;
using DTS.Logging.MongoDB;
using DTS.Logging.MongoDB.Configuration;
using Microsoft.VisualBasic;
using Serilog;

/// <summary>

/// 

/// </summary>

/// <remarks></remarks>
public partial class LoggingDebugging
{
    public static NameValueCollection EnabledLogTypes = Util.GetConfigSection("Logging");
    public static NameValueCollection EnabledLogs = Util.GetConfigSection("enabledLogs");
    // Private Shared sempaphore As Object = New Object()
    /// <summary>
    /// Proxy method to set the LogInstance properties and add LogInstance class to LogBuffer
    /// </summary>
    /// <param name="logType"></param>
    /// <param name="message"></param>
    /// <param name="traceKey"></param>
    /// <param name="user"></param>
    /// <param name="TS"></param>
    /// <returns></returns>
    /// <remarks></remarks>
    public static long Log(string logType, string message, long traceKey = default(long), string user = null, long TS = default(long))
    {
        long LogTS;
        if (Information.IsNothing(traceKey) | traceKey == 0)
        {
            throw new ETDMSException(Util.t("traceKey must not be null. Please modify your method to either create a new " + "traceKey if it is the start of a request, or use an existing traceKey if it is " + "part of a request."));
        }

        if (LoggingDebugging.EnabledLogTypes(logType) == "True")
        {
            var loginstance = new LogInstance(m_logType: logType, m_message: message, m_user: user, m_TS: TS);
            LogTS = LogAggregator.AddLogInstance(loginstance, traceKey);
        }
        else
        {
            // If logType = "query" Then
            // Dim LogEntry As New LogInstance(m_logType:=logType, m_message:=message, m_user:=user, m_TS:=TS)
            // LogTS = LoggingDebugging.AddLogBuffer(Props:=LogEntry, traceKey:=traceKey)
            // End If
            LogTS = Now.Ticks();
        }

        return LogTS;
    }



    /// <summary>
    /// Fluh out from Logbuffer
    /// </summary>
    /// <param name="userPin"></param>
    /// <param name="traceKey"></param>
    /// <remarks></remarks>
    public static void FlushLog(string userPin, string traceKey = null, ref string esTime = null, ref HttpRequest request = null, ref HttpRequestMessage message = null)
    {
        LogItem logitem = null;
        LogAggregator.TryGet(userPin, logitem, traceKey, esTime, request, message);
    }


    /// <summary>
    /// Converts ticks to Date and Time
    /// </summary>
    /// <param name="ticks"></param>
    /// <returns></returns>
    /// <remarks></remarks>
    public static string convertTickstoDateTime(long ticks)
    {
        var dt = new DateTime(ticks);
        return Strings.Format(dt, "MM/dd/yyy hh:mm:ss.fffffff");
    }

    /// <summary>
    /// Converts ticks to time
    /// </summary>
    /// <param name="ticks"></param>
    /// <returns></returns>
    /// <remarks></remarks>
    public static string convertTickstoTime(long ticks)
    {
        var timespan = new TimeSpan(ticks);
        return string.Format("{0}:{1}:{2}:{3}", timespan.Hours.ToString("D2"), timespan.Minutes.ToString("D2"), timespan.Seconds.ToString("D2"), timespan.Milliseconds.ToString("D3"));
    }

    /// <summary>
    /// Converts ticks to Date and Time with 24 hrs
    /// </summary>
    /// <param name="ticks"></param>
    /// <returns></returns>
    /// <remarks></remarks>
    public static string convertTickstoLongDateTime(long ticks)
    {
        var dt = new DateTime(ticks);
        return dt.ToString();
    }

    /// <summary>
    /// Reads configuration values for serilog
    /// </summary>
    public static void Configure()
    {

        // Serilog.Log.Logger = New Serilog.LoggerConfiguration().ReadFrom.AppSettings().CreateLogger()

        StructuredMongoDBSettings settings = ConfigurationManager.AppSettings.MongoDBSettings();
        Serilog.Log.Logger = new Serilog.LoggerConfiguration().ReadFrom.AppSettings().Enrich.WithProperty("Application", "user-service-dev").Enrich.WithProperty("Stage", "local").WriteTo.StructuredMongoDB(settings).CreateLogger();




        Serilog.Log.Information("logger initialized");
    }
}

Expected output

using System.Collections.Specialized;
using System;
using System.Net.Http;
using DTS.Logging.MongoDB;
using DTS.Logging.MongoDB.Configuration;
using Microsoft.VisualBasic;
using Serilog;

/// <summary>

/// 

/// </summary>

/// <remarks></remarks>
public partial class LoggingDebugging
{
    public static NameValueCollection EnabledLogTypes = Util.GetConfigSection("Logging");
    public static NameValueCollection EnabledLogs = Util.GetConfigSection("enabledLogs");
    // Private Shared sempaphore As Object = New Object()
    /// <summary>
    /// Proxy method to set the LogInstance properties and add LogInstance class to LogBuffer
    /// </summary>
    /// <param name="logType"></param>
    /// <param name="message"></param>
    /// <param name="traceKey"></param>
    /// <param name="user"></param>
    /// <param name="TS"></param>
    /// <returns></returns>
    /// <remarks></remarks>
    public static long Log(string logType, string message, long traceKey = default(long), string user = null, long TS = default(long))
    {
        long LogTS;
        if (Information.IsNothing(traceKey) | traceKey == 0)
        {
            throw new ETDMSException(Util.t("traceKey must not be null. Please modify your method to either create a new " + "traceKey if it is the start of a request, or use an existing traceKey if it is " + "part of a request."));
        }

        if (LoggingDebugging.EnabledLogTypes(logType) == "True")
        {
            var loginstance = new LogInstance(m_logType: logType, m_message: message, m_user: user, m_TS: TS);
            LogTS = LogAggregator.AddLogInstance(loginstance, traceKey);
        }
        else
        {
            // If logType = "query" Then
            // Dim LogEntry As New LogInstance(m_logType:=logType, m_message:=message, m_user:=user, m_TS:=TS)
            // LogTS = LoggingDebugging.AddLogBuffer(Props:=LogEntry, traceKey:=traceKey)
            // End If
            LogTS = Now.Ticks();
        }

        return LogTS;
    }



    /// <summary>
    /// Fluh out from Logbuffer
    /// </summary>
    /// <param name="userPin"></param>
    /// <param name="traceKey"></param>
    /// <remarks></remarks>
    public static void FlushLog(string userPin, string traceKey = null, ref string esTime = null, ref HttpRequest request = null, ref HttpRequestMessage message = null)
    {
        LogItem logitem = null;
        LogAggregator.TryGet(userPin, logitem, traceKey, esTime, request, message);
    }


    /// <summary>
    /// Converts ticks to Date and Time
    /// </summary>
    /// <param name="ticks"></param>
    /// <returns></returns>
    /// <remarks></remarks>
    public static string convertTickstoDateTime(long ticks)
    {
        var dt = new DateTime(ticks);
        return Strings.Format(dt, "MM/dd/yyy hh:mm:ss.fffffff");
    }

    /// <summary>
    /// Converts ticks to time
    /// </summary>
    /// <param name="ticks"></param>
    /// <returns></returns>
    /// <remarks></remarks>
    public static string convertTickstoTime(long ticks)
    {
        var timespan = new TimeSpan(ticks);
        return string.Format("{0}:{1}:{2}:{3}", timespan.Hours.ToString("D2"), timespan.Minutes.ToString("D2"), timespan.Seconds.ToString("D2"), timespan.Milliseconds.ToString("D3"));
    }

    /// <summary>
    /// Converts ticks to Date and Time with 24 hrs
    /// </summary>
    /// <param name="ticks"></param>
    /// <returns></returns>
    /// <remarks></remarks>
    public static string convertTickstoLongDateTime(long ticks)
    {
        var dt = new DateTime(ticks);
        return dt.ToString();
    }

    /// <summary>
    /// Reads configuration values for serilog
    /// </summary>
    public static void Configure()
    {

        // Serilog.Log.Logger = New Serilog.LoggerConfiguration().ReadFrom.AppSettings().CreateLogger()

        StructuredMongoDBSettings settings = ConfigurationManager.AppSettings.MongoDBSettings();
        Serilog.Log.Logger = new Serilog.LoggerConfiguration().ReadFrom.AppSettings().Enrich.WithProperty("Application", "user-service-dev").Enrich.WithProperty("Stage", "local").WriteTo.StructuredMongoDB(settings).CreateLogger();




        Serilog.Log.Information("logger initialized");
    }
}

Details

There's code to avoid using statements being removed if they can't be found. It doesn't seem to be working here (see using System.Collections.Specialized;)
Raised here: #524 (comment)

DateTime.Now also not identified. The default references/imports may need updating

Metadata

Metadata

Assignees

No one assigned

    Labels

    VB -> C#Specific to VB -> C# conversion

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions