Bagikan melalui


LogStore Kelas

Definisi

Mewakili penyimpanan terstruktur log.

public ref class LogStore sealed : IDisposable
public sealed class LogStore : IDisposable
type LogStore = class
    interface IDisposable
Public NotInheritable Class LogStore
Implements IDisposable
Warisan
LogStore
Penerapan

Contoh

Contoh berikut menunjukkan cara mengarsipkan LogStore ke dokumen XML.

class LogBackup
{
    static void ArchiveToXML(LogStore logStore, string fileName)
    {
        LogArchiveSnapshot snapshot = logStore.CreateLogArchiveSnapshot();

        XmlTextWriter writer = new XmlTextWriter(fileName, Encoding.ASCII);

        writer.WriteStartElement("logArchive");
        foreach(FileRegion region in snapshot.ArchiveRegions)
        {
            writer.WriteStartElement("fileRegion");
            writer.WriteElementString("path", region.Path);
            writer.WriteElementString("length", region.FileLength.ToString());
            writer.WriteElementString("offset", region.Offset.ToString());
            using(Stream dataStream = region.GetStream())
            {
                byte[] data = new byte[dataStream.Length];
                dataStream.Read(data, 0, data.Length);
                writer.WriteElementString("data", Convert.ToBase64String(data));
            }
            writer.WriteEndElement();
        }
        writer.WriteEndElement();
        writer.Close();
        logStore.SetArchiveTail(snapshot.LastSequenceNumber);
    }
    static void RestoreFromXML(string fileName)
    {
        using(XmlTextReader reader = new XmlTextReader(fileName))
        {
            reader.ReadStartElement("logArchive");
            while(reader.IsStartElement())
            {
                string path = reader.ReadElementString("path");
                long length = Int64.Parse(reader.ReadElementString("length"));
                long offset = Int64.Parse(reader.ReadElementString("offset"));
                string dataString = reader.ReadElementString("data");
                byte[] data = Convert.FromBase64String(dataString);
                FileStream fileStream;
                using(fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    fileStream.SetLength(length);
                    fileStream.Position = offset; fileStream.Write(data, 0, data.Length);
                }
            }
        reader.ReadEndElement();
        }
    }
}
Friend Class LogBackup
    Private Shared Sub ArchiveToXML(ByVal logStore As LogStore, ByVal fileName As String)
        Dim snapshot As LogArchiveSnapshot = logStore.CreateLogArchiveSnapshot()

        Dim writer As New XmlTextWriter(fileName, Encoding.ASCII)

        writer.WriteStartElement("logArchive")
        For Each region As FileRegion In snapshot.ArchiveRegions
            writer.WriteStartElement("fileRegion")
            writer.WriteElementString("path", region.Path)
            writer.WriteElementString("length", region.FileLength.ToString())
            writer.WriteElementString("offset", region.Offset.ToString())
            Using dataStream As Stream = region.GetStream()
                Dim data(dataStream.Length - 1) As Byte
                dataStream.Read(data, 0, data.Length)
                writer.WriteElementString("data", Convert.ToBase64String(data))
            End Using
            writer.WriteEndElement()
        Next region
        writer.WriteEndElement()
        writer.Close()
        logStore.SetArchiveTail(snapshot.LastSequenceNumber)

    End Sub
    Private Shared Sub RestoreFromXML(ByVal fileName As String)
        Using reader As New XmlTextReader(fileName)
            reader.ReadStartElement("logArchive")
            Do While reader.IsStartElement()
                Dim path = reader.ReadElementString("path")
                Dim length = Int64.Parse(reader.ReadElementString("length"))
                Dim offset = Int64.Parse(reader.ReadElementString("offset"))
                Dim dataString = reader.ReadElementString("data")
                Dim data() = Convert.FromBase64String(dataString)
                Dim fileStream As FileStream
                fileStream = New FileStream(path, FileMode.OpenOrCreate, FileAccess.Write)
                Using fileStream
                    fileStream.SetLength(length)
                    fileStream.Position = offset
                    fileStream.Write(data, 0, data.Length)
                End Using
            Loop
            reader.ReadEndElement()
        End Using
    End Sub
End Class

Keterangan

Kelas ini LogRecordSequence menyediakan implementasi antarmuka urutan rekaman di atas log Common Log File System (CLFS). Ini bekerja dengan LogStore kelas , yang menyediakan antarmuka untuk memanipulasi dan mengelola file log CLFS secara langsung. Penyimpanan log menyediakan penyimpanan khusus tambahan di sekumpulan tingkat disk. Kelas LogStore mewakili penyimpanan ini, dan menyediakan metode untuk menambahkan dan menghapus kontainer, mengatur kebijakan, dan membuat arsip. Ini tidak menyediakan metode untuk membaca dari dan menulis ke penyimpanan; metode ini disediakan oleh LogRecordSequence kelas .

Hubungan antara LogStore kelas dan LogRecordSequence kelas mirip dengan hubungan antara file disk dan FileStream objek. File disk menyediakan penyimpanan aktual dan memiliki atribut seperti panjang dan waktu akses terakhir, sementara FileStream objek menyediakan tampilan pada file yang dapat digunakan untuk membaca darinya dan menulisnya. Demikian pula, LogStore kelas ini memiliki atribut seperti kebijakan dan kumpulan tingkat disk, dan LogRecordSequence kelas menyediakan mekanisme yang berorientasi pada rekaman untuk membaca dan menulis data.

Tidak seperti urutan rekaman file yang diwakili oleh FileRecordSequence kelas, LogStore instans menyimpan datanya dalam kumpulan tingkat disk, yang diwakili oleh LogExtent instans. Batasan dalam instans tertentu LogStore adalah semua ukuran seragam, dan ruang ditambahkan ke dan dihapus dari LogStore instans dalam kenaikan sejauh mana. Untuk menambahkan dan menghapus tingkat log, gunakan Add metode LogExtentCollection dan Remove objek, yang dapat dikembalikan oleh Extents properti .

Instans LogStore dapat memiliki kebijakan yang terkait dengannya. Ini diwakili oleh LogPolicy instans yang dapat dikembalikan oleh Policy properti . Kebijakan menentukan aturan yang akan coba diikuti log, seperti jumlah maksimum batas dan ukuran minimum, dan instruksi tentang menumbuhkan atau menyusutkan LogStore dalam kondisi tertentu. Selain itu, Anda dapat menentukan apakah LogStore instans dapat diarsipkan. Kebijakan diatur per log dan volatil, yang berarti bahwa setelah setiap handel ke log ditutup, kebijakan tidak ada lagi.

Konstruktor

Nama Deskripsi
LogStore(SafeFileHandle)

Menginisialisasi instans LogStore baru kelas untuk handel yang ditentukan.

LogStore(String, FileMode, FileAccess, FileShare, FileSecurity)

Menginisialisasi instans baru dari kelas LogStore.

LogStore(String, FileMode, FileAccess, FileShare)

Menginisialisasi instans baru dari kelas LogStore.

LogStore(String, FileMode, FileAccess)

Menginisialisasi instans LogStore baru kelas dengan jalur, mode, dan akses yang ditentukan.

LogStore(String, FileMode)

Menginisialisasi instans LogStore baru kelas dengan jalur dan mode yang ditentukan.

Properti

Nama Deskripsi
Archivable

Mendapatkan nilai yang menunjukkan apakah instans ini LogStore dapat diarsipkan.

BaseSequenceNumber

Mendapatkan nomor urut terendah yang sesuai dengan rekaman yang valid dalam instans ini LogStore .

Extents

Mendapatkan pengumpulan tingkat log yang berisi data untuk penyimpanan log ini.

FreeBytes

Mendapatkan jumlah byte yang tersedia di penyimpanan log.

Handle

Mendapatkan handel file sistem operasi untuk file log yang dienkapsulasi instans saat ini LogStore .

LastSequenceNumber

Ketika ditimpa di kelas turunan, mendapatkan nomor urut rekaman berikutnya untuk ditambahkan ke penyimpanan log.

Length

Mendapatkan ukuran penyimpanan log, dalam byte.

Policy

Mendapatkan kebijakan yang terkait dengan penyimpanan log ini.

StreamCount

Mendapatkan jumlah aliran log di penyimpanan log ini.

Metode

Nama Deskripsi
CreateLogArchiveSnapshot()

Mengambil rekam jepret status penyimpanan log untuk membuat cadangan.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Mengambil rekam jepret status penyimpanan log antara nomor urutan yang ditentukan untuk membuat cadangan.

Delete(String)

Menghapus penyimpanan log.

Dispose()

Merilis semua sumber daya yang LogStoredigunakan oleh .

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari Objectsaat ini.

(Diperoleh dari Object)
SetArchiveTail(SequenceNumber)

Mengatur nomor urut ekor arsip.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk