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 LogRecordSequence ini menyediakan implementasi antarmuka urutan rekaman di atas log Common Log File System (CLFS). Ini bekerja dengan LogStore kelas , yang menyediakan antarmuka untuk secara langsung memanipulasi dan mengelola file log CLFS. 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 jangkauan disk, dan LogRecordSequence kelas menyediakan mekanisme berorientasi rekaman untuk membaca dan menulis data.

Tidak seperti urutan rekaman file yang diwakili oleh FileRecordSequence kelas , LogStore instans menyimpan datanya dalam kumpulan jangkauan disk, yang diwakili oleh LogExtent instans. Jangkauan dalam instans tertentu LogStore adalah semua ukuran yang seragam, dan ruang ditambahkan ke dan dihapus dari LogStore instans dalam kenaikan sejauh mana. Untuk menambahkan dan menghapus jangkauan log, gunakan Add metode dan Remove objek LogExtentCollection , 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 dicoba diikuti log, seperti jumlah maksimum jangkauan dan ukuran minimum, dan instruksi tentang pertumbuhan atau penyusutan 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 lagi ada.

Konstruktor

LogStore(SafeFileHandle)

Menginisialisasi instans LogStore baru kelas untuk handel yang ditentukan.

LogStore(String, FileMode)

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

LogStore(String, FileMode, FileAccess)

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

LogStore(String, FileMode, FileAccess, FileShare)

Menginisialisasi instans baru kelas LogStore.

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

Menginisialisasi instans baru kelas LogStore.

Properti

Archivable

Mendapatkan nilai yang menunjukkan apakah instans ini LogStore dapat diarsipkan.

BaseSequenceNumber

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

Extents

Mendapatkan pengumpulan jangkauan 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 urutan 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

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 dari instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
SetArchiveTail(SequenceNumber)

Mengatur nomor urut ekor arsip.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk