/// <summary>
 /// Creates a directory tree, with all intermediate branches
 /// </summary>
 /// <param name="Directory">The directory to create</param>
 public static void CreateDirectoryTree(DirectoryReference Directory)
 {
     if (!DirectoryReference.Exists(Directory))
     {
         CreateDirectoryTree(Directory.ParentDirectory);
         DirectoryReference.CreateDirectory(Directory);
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// Saves a file to disk, using the binary formatter
 /// </summary>
 /// <param name="Location">File to write to</param>
 /// <param name="Object">Object to serialize</param>
 public static void Save(FileReference Location, object Object)
 {
     DirectoryReference.CreateDirectory(Location.Directory);
     using (FileStream Stream = new FileStream(Location.FullName, FileMode.Create, FileAccess.Write))
     {
         BinaryFormatter Formatter = new BinaryFormatter();
         Formatter.Serialize(Stream, Object);
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Saves a file to disk using the binary formatter, without updating the timestamp if it hasn't changed
        /// </summary>
        /// <param name="Location">File to write to</param>
        /// <param name="Object">Object to serialize</param>
        public static void SaveIfDifferent(FileReference Location, object Object)
        {
            byte[] Contents;
            using (MemoryStream Stream = new MemoryStream())
            {
                BinaryFormatter Formatter = new BinaryFormatter();
                Formatter.Serialize(Stream, Object);
                Contents = Stream.ToArray();
            }

            DirectoryReference.CreateDirectory(Location.Directory);
            FileReference.WriteAllBytesIfDifferent(Location, Contents);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Saves all the scope information to a file
        /// </summary>
        public static void Flush()
        {
            string TelemetryDir = Environment.GetEnvironmentVariable("UE_TELEMETRY_DIR");

            if (TelemetryDir != null)
            {
                FileReference File;
                using (Process Process = Process.GetCurrentProcess())
                {
                    DirectoryReference TelemetryDirRef = new DirectoryReference(TelemetryDir);
                    DirectoryReference.CreateDirectory(TelemetryDirRef);

                    string FileName = String.Format("{0}.{1}.json", Path.GetFileName(Assembly.GetEntryAssembly().Location), Process.Id, Process.StartTime.Ticks);
                    File = FileReference.Combine(TelemetryDirRef, FileName);
                }

                using (JsonWriter Writer = new JsonWriter(File))
                {
                    Writer.WriteObjectStart();
                    Writer.WriteArrayStart("Spans");
                    foreach (TraceSpanImpl Span in Spans)
                    {
                        if (Span.FinishTime != null)
                        {
                            Writer.WriteObjectStart();
                            Writer.WriteValue("Name", Span.Name);
                            if (Span.Resource != null)
                            {
                                Writer.WriteValue("Resource", Span.Resource);
                            }
                            if (Span.Service != null)
                            {
                                Writer.WriteValue("Service", Span.Service);
                            }
                            Writer.WriteValue("StartTime", Span.StartTime.ToString("o", CultureInfo.InvariantCulture));
                            Writer.WriteValue("FinishTime", Span.FinishTime.Value.ToString("o", CultureInfo.InvariantCulture));
                            Writer.WriteObjectStart("Metadata");
                            foreach (KeyValuePair <string, string> Pair in Span.Metadata)
                            {
                                Writer.WriteValue(Pair.Key, Pair.Value);
                            }
                            Writer.WriteObjectEnd();
                            Writer.WriteObjectEnd();
                        }
                    }
                    Writer.WriteArrayEnd();
                    Writer.WriteObjectEnd();
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Save a JSON object to a file on disk
        /// </summary>
        /// <param name="Location">The location of the file to read</param>
        /// <param name="Object">The object to save</param>
        public static void Save(FileReference Location, object Object)
        {
            string Text = Serialize(Object);

            try
            {
                DirectoryReference.CreateDirectory(Location.Directory);
                FileReference.WriteAllText(Location, Text);
            }
            catch (Exception Ex)
            {
                throw new Exception(String.Format("Unable to write '{0}'", Location), Ex);
            }
        }
Exemplo n.º 6
0
 /// <summary>
 /// Adds a trace listener that writes to a log file
 /// </summary>
 /// <param name="OutputFile">The file to write to</param>
 /// <returns>The created trace listener</returns>
 public static TextWriterTraceListener AddFileWriter(string Name, FileReference OutputFile)
 {
     try
     {
         Log.OutputFile = OutputFile;
         DirectoryReference.CreateDirectory(OutputFile.Directory);
         TextWriterTraceListener LogTraceListener = new TextWriterTraceListener(new StreamWriter(OutputFile.FullName), Name);
         Trace.Listeners.Add(LogTraceListener);
         return(LogTraceListener);
     }
     catch (Exception Ex)
     {
         throw new Exception(String.Format("Unable to open log file for writing ({0})", OutputFile), Ex);
     }
 }