Как написать файл журнала, когда сообщение отправлено на удаленный mq

Я хочу написать файл журнала на C#. Каждый раз, когда на удаленный сервер mq. Пример: предположим, что сообщение abcd отправлено на удаленный mq, тогда файл журнала будет записывать, что как 1 сообщение получено удаленным mq в 10-09-2018 11:30 с указанием времени и даты. как я могу этого добиться. Можно ли написать такой код? любая подсказка, любая идея, любая ссылка будут полезны. Пожалуйста помоги.

РЕДАКТИРОВАТЬ

        MQQueueManager queueManager;
        MQMessage queueMessage;
        MQGetMessageOptions queueGetMessageOptions;
        MQQueue queue;


        string QueueName;
        string QueueManagerName;
        string ChannelInfo;
        string channelName;
        string PortNumber;
        string transportType;
        string connectionName;

        QueueManagerName = ConfigurationManager.AppSettings["QueueManager"]; 
        QueueName = ConfigurationManager.AppSettings["Queuename"];
        ChannelInfo = ConfigurationManager.AppSettings["ChannelInformation"];
        PortNumber = ConfigurationManager.AppSettings["Port"];
        char[] separator = { '/' };
        string[] ChannelParams;
        ChannelParams = ChannelInfo.Split(separator);
        channelName = ConfigurationManager.AppSettings["Channel"];
        transportType = ConfigurationManager.AppSettings["TransportType"];
        connectionName = ConfigurationManager.AppSettings["ConnectionName"];
        String strReturn = "";

        try
        {
            queueManager = new MQQueueManager(QueueManagerName,
            channelName, connectionName);
            strReturn = "Connected Successfully";

            queue = queueManager.AccessQueue(QueueName,
            MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_FAIL_IF_QUIESCING);
            queueMessage = new MQMessage();
            queueMessage.Format = MQC.MQFMT_STRING;
            queueGetMessageOptions = new MQGetMessageOptions();
            queue.Get(queueMessage, queueGetMessageOptions);
            strReturn = queueMessage.ReadString(queueMessage.MessageLength);
        }
        catch (MQException exp)
        {
            strReturn = "Exception: " + exp.Message;
        }

        string path1 = @"C:\documents\Example.txt";
        System.IO.File.WriteAllText(path1, strReturn);

что ты уже испробовал? В чем именно ваша проблема с записью файла журнала?

Eriks Klotins 10.09.2018 09:23

Я могу подключиться к удаленному mq, и после подключения я могу сохранить сообщение в текстовый файл, но я хочу написать, что сообщение получено до загрузки msg

muniya 10.09.2018 14:05
0
2
101
1

Ответы 1

Этот вопрос не имеет ничего общего с MQ. Это просто базовый вопрос программирования на C#. Существует множество фреймворков для C#, которые вы можете использовать.

Вот 2 основных метода входа в C#. Создайте свой собственный класс «Регистратора» и поместите их в него.

public static void WriteLog(String logFileName, byte[] data)
{
   FileStream fs = null;
   DateTime currentDT = DateTime.Now;
   String header = currentDT.ToString("yyyy/MM/dd HH:mm:ss.fff") + " ";
   String LF = "\n";

   try
   {
      fs = new FileStream(logFileName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);

      if (fs.CanWrite)
      {
         fs.Write(Encoding.Default.GetBytes(header), 0, header.Length);
         fs.Write(data, 0, data.Length);
         fs.Write(Encoding.Default.GetBytes(LF), 0, LF.Length);
      }
   }
   catch (IOException ex)
   {
      Console.WriteLine(ex.Message);
   }
   finally
   {
      try
      {
         if (fs != null)
            fs.Close();
      }
      catch (IOException ex)
      {
         Console.WriteLine(ex.Message);
      }
   }
}

public static void WriteLog(String logFileName, String data)
{
   FileStream fs = null;
   StreamWriter sw = null;
   DateTime currentDT = DateTime.Now;
   String header = currentDT.ToString("yyyy/MM/dd HH:mm:ss.fff") + " ";
   String LF = "\n";

   try
   {
      fs = new FileStream(logFileName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);

      if (fs.CanWrite)
      {
         sw = new StreamWriter(fs);
         sw.Write(header);
         sw.Write(data);
         sw.Write(LF);
      }
   }
   catch (IOException ex)
   {
      Console.WriteLine(ex.Message);
   }
   finally
   {
      try
      {
         if (sw != null)
            sw.Close();
      }
      catch (IOException ex)
      {
         Console.WriteLine(ex.Message);
      }

      try
      {
         if (fs != null)
            fs.Close();
      }
      catch (IOException ex)
      {
         Console.WriteLine(ex.Message);
      }
   }
}

Затем в вашем приложении MQ после успешного получения сообщения из очереди вы можете сделать следующее, чтобы зарегистрировать его:

Logger.WriteLog("C:\temp\mylog.txt", "message received");

Другие вопросы по теме