예제 #1
0
        public override void StreamEvents(InputDefinition inputDefinition)
        {
            #region Get stanza values

            Stanza stanza = inputDefinition.Stanza;
            SystemLogger.Write(string.Format("Name of Stanza is : {0}", stanza.Name));

            string reportName   = GetConfigurationValue(stanza, ConstantReportName);
            string emailAddress = GetConfigurationValue(stanza, ConstantEmailAddress);
            string password     = GetConfigurationValue(stanza, ConstantPassword);

            SystemLogger.Write(GetConfigurationValue(stanza, ConstantStartDate));

            DateTime startDate = TryParseDateTime(GetConfigurationValue(stanza, ConstantStartDate), DateTime.MinValue);
            DateTime endDate   = TryParseDateTime(GetConfigurationValue(stanza, ConstantEndDate), DateTime.MinValue);

            #endregion Get stanza values

            string streamName = stanza.Name;

            ReportingContext context = new ReportingContext("https://reports.office365.com/ecp/reportingwebservice/reporting.svc");
            context.UserName     = GetConfigurationValue(stanza, ConstantEmailAddress);
            context.Password     = GetConfigurationValue(stanza, ConstantPassword);
            context.FromDateTime = TryParseDateTime(GetConfigurationValue(stanza, ConstantStartDate), DateTime.MinValue);
            context.ToDateTime   = TryParseDateTime(GetConfigurationValue(stanza, ConstantEndDate), DateTime.MinValue);
            context.SetLogger(new SplunkTraceLogger());

            IReportVisitor visitor = new SplunkReportVisitor(streamName);

            ReportingStream stream = new ReportingStream(context, reportName, streamName);
            stream.RetrieveData(visitor);
        }
예제 #2
0
 public void SetEnvironmentVariable(string varName, string value)
 {
     SystemLogger.Write(string.Format(Locale.NStr("en='{0}';ru='{1}'"),
                                      "WARNING! Deprecated method: \"SystemInfo.SetEnvironmentVariable\" is deprecated, use \"SetEnvironmentVariable\" from global context",
                                      "Предупреждение! Устаревший метод: \"СистемнаяИнформация.УстановитьПеременнуюСреды\" устарел, используйте метод глобального контекста \"УстановитьПеременнуюСреды\""));
     System.Environment.SetEnvironmentVariable(varName, value);
 }
예제 #3
0
        public static ConsoleContext Constructor()
        {
            var provider = GlobalsManager.GetGlobalContext <ConsoleProvider>();

            SystemLogger.Write("WARNING: Constructor of Console is obsolete. Use global property Консоль/Console");

            return(provider.Console);
        }
예제 #4
0
        public static void TraceLoadLibrary(string message)
        {
            //OS_LRE_TRACE - по аналогии с Package loader OSLIB_LOADER_TRACE
            var isTrace = System.Environment.GetEnvironmentVariable("OS_LRE_TRACE");

            if (isTrace == "1")
            {
                SystemLogger.Write("LRE: " + message);
            }
        }
예제 #5
0
        private void SchemaSet_ValidationError(object sender, ValidationEventArgs args)
        {
            switch (args.Severity)
            {
            case XmlSeverityType.Error:
                SystemLogger.Write($"ERROR:{args.Message}");
                break;

            default:
                SystemLogger.Write($"WARNING:{args.Message}");
                break;
            }
        }
        public IValue GetEnvironmentVariable(string varName)
        {
            SystemLogger.Write("WARNING! Deprecated method: 'SystemInfo.GetEnvironmentVariable' is deprecated, use 'GetEnvironmentVariable' from global context");
            string value = System.Environment.GetEnvironmentVariable(varName);

            if (value == null)
            {
                return(ValueFactory.Create());
            }
            else
            {
                return(ValueFactory.Create(value));
            }
        }
예제 #7
0
        public MapImpl EnvironmentVariables()
        {
            SystemLogger.Write("WARNING! Deprecated method: 'SystemInfo.EnvironmentVariables' is deprecated, use 'EnvironmentVariables' from global context");
            var varsMap = new MapImpl();
            var allVars = System.Environment.GetEnvironmentVariables();

            foreach (DictionaryEntry item in allVars)
            {
                varsMap.Insert(
                    ValueFactory.Create((string)item.Key),
                    ValueFactory.Create((string)item.Value));
            }

            return(varsMap);
        }
예제 #8
0
        public static void Error(string message, Exception e)
        {
            string exceptionMessage;

            if (e is RuntimeException re)
            {
                exceptionMessage = re.Message;
            }
            else
            {
                exceptionMessage = e.ToString();
            }

            SystemLogger.Write(string.Format("[ERROR] {0}: {1}", message, exceptionMessage));
        }
예제 #9
0
        private static void ValidationCallbackOne(object sender, ValidationEventArgs args)
        {
            switch (args.Severity)
            {
            case XmlSeverityType.Error:
                throw new RuntimeException(args.Message);

            case XmlSeverityType.Warning:
                SystemLogger.Write($"WARNING:{args.Message}");
                break;

            default:
                break;
            }
        }
예제 #10
0
        private string GetConfigurationValue(Stanza stanza, string keyName)
        {
            string value;

            if (stanza.SingleValueParameters.TryGetValue(
                    keyName,
                    out value))
            {
                SystemLogger.Write(string.Format("Value for [{0}] retrieved successfully.", keyName));
                return(value);
            }

            SystemLogger.Write(string.Format("Value for [{0}] retrieved failed. Return empty string.", keyName));
            return(string.Empty);
        }
예제 #11
0
        public IValue GetEnvironmentVariable(string varName)
        {
            SystemLogger.Write(string.Format(Locale.NStr("en='{0}';ru='{1}'"),
                                             "WARNING! Deprecated method: \"SystemInfo.GetEnvironmentVariable\" is deprecated, use \"GetEnvironmentVariable\" from global context",
                                             "Предупреждение! Устаревший метод: \"СистемнаяИнформация.ПолучитьПеременнуюСреды\" устарел, используйте метод глобального контекста \"ПолучитьПеременнуюСреды\""));
            string value = System.Environment.GetEnvironmentVariable(varName);

            if (value == null)
            {
                return(ValueFactory.Create());
            }
            else
            {
                return(ValueFactory.Create(value));
            }
        }
예제 #12
0
        /// <summary>
        ///
        /// </summary>
        public override void VisitBatchReport()
        {
            SystemLogger.Write(string.Format("VisitBatchReport: {0}", this.reportObjectList.Count));

            using (EventStreamWriter writer = new EventStreamWriter())
            {
                foreach (ReportObject report in reportObjectList)
                {
                    writer.Write(new EventElement
                    {
                        Time   = report.Date,
                        Source = this.streamName,
                        Data   = report.ConvertToXml()
                    });
                }
            }
        }
예제 #13
0
 private void DeleteTemporaryFile()
 {
     if (_backingFile != null && File.Exists(_backingFile.Name))
     {
         try
         {
             _backingFile.Close();
             File.Delete(_backingFile.Name);
         }
         catch
         {
             SystemLogger.Write($"WARNING! Can't delete temporary file {_backingFile.Name}");
         }
         finally
         {
             _backingFile = null;
         }
     }
 }
예제 #14
0
        private void CheckIfCallIsPossible(int methodNumber, IValue[] arguments)
        {
            var methodInfo = _methods.GetMethodInfo(methodNumber);

            if (!methodInfo.IsDeprecated)
            {
                return;
            }
            if (methodInfo.ThrowOnUseDeprecated)
            {
                throw RuntimeException.DeprecatedMethodCall(methodInfo.Name);
            }
            if (_warnedDeprecatedMethods.Contains(methodNumber))
            {
                return;
            }
            SystemLogger.Write($"ВНИМАНИЕ! Вызов устаревшего метода {methodInfo.Name}");
            _warnedDeprecatedMethods.Add(methodNumber);
        }
 public void SetEnvironmentVariable(string varName, string value)
 {
     SystemLogger.Write("WARNING! Deprecated method: 'SystemInfo.SetEnvironmentVariable' is deprecated, use 'SetEnvironmentVariable' from global context");
     System.Environment.SetEnvironmentVariable(varName, value);
 }
예제 #16
0
 public static void Error(string message)
 {
     SystemLogger.Write(string.Format("[ERROR] {0}", message));
 }
 public void LogInformation(string message)
 {
     SystemLogger.Write(message);
 }
 public void LogError(string message)
 {
     SystemLogger.Write(message);
 }
예제 #19
0
        /// <summary>
        ///     Stream events into stdout
        /// </summary>
        /// <param name="inputDefinition">Input definition from Splunk</param>
        public override void StreamEvents(InputDefinition inputDefinition)
        {
            string lastVarValue = null;

            using (var writer = new EventStreamWriter())
            {
                var stanza = inputDefinition.Stanza;

                // Gets input name. It is also the env var name.
                const string Seperator      = @"://";
                var          indexInputName = stanza.Name.IndexOf(Seperator) + Seperator.Length;
                var          varName        = stanza.Name.Substring(indexInputName);

                SystemLogger.Write(
                    string.Format(
                        "Name of the var to monitor is : {0}",
                        varName));

                var interval = 1000;

                string intervalParam;
                if (stanza.SingleValueParameters.TryGetValue(
                        PollingInterval,
                        out intervalParam))
                {
                    interval = int.Parse(intervalParam);
                }

                SystemLogger.Write(
                    string.Format(
                        "Polling interval is : {0}",
                        interval));

                while (true)
                {
                    var varValue = Environment.GetEnvironmentVariable(
                        varName,
                        EnvironmentVariableTarget.Machine);

                    // Event data can't be null for real events.
                    varValue = varValue ?? "(not exist)";

                    // Splunk does not record lines with only white spaces.
                    varValue = string.IsNullOrWhiteSpace(varValue)
                                   ? "(white space)"
                                   : varValue;

                    if (varValue != lastVarValue)
                    {
                        writer.Write(
                            new EventElement
                        {
                            Source = varName,
                            Data   = varValue,
                        });
                        lastVarValue = varValue;
                    }
                    Thread.Sleep(interval);
                }
            }
        }