Sessionslogg i en aktiviteten Kopiera

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Du kan logga dina kopierade filnamn i en aktiviteten Kopiera. Detta kan hjälpa till att säkerställa att data inte bara kopieras från källa till mål, utan även verifierar konsekvens mellan källa och mål.

När du aktiverar feltoleransinställningen i en aktiviteten Kopiera för att hoppa över felaktiga data kan de överhoppade filerna och de överhoppade raderna också loggas. Du kan få mer information från feltolerans i kopieringsaktiviteten.

Med tanke på att du har möjlighet att få alla filnamn kopierade av Azure Data Factory (ADF) aktiviteten Kopiera via aktivering av sessionslogg, är det användbart för dig i följande scenarier:

  • När du har använt ADF-kopieringsaktiviteter för att kopiera filerna från en lagringsplats till en annan hittar du några oväntade filer i målarkivet. Du kan genomsöka aktiviteten Kopiera sessionsloggar för att se vilken aktivitet som faktiskt kopierade filerna och när. Med den här metoden kan du enkelt hitta rotorsaken och åtgärda dina konfigurationer i ADF.
  • När du har använt ADF-kopieringsaktiviteter för att kopiera filerna från en lagring till en annan, upptäcker du att filerna som kopieras till målet inte förväntas från källarkivet. Du kan genomsöka aktiviteten Kopiera sessionsloggar för att hämta tidsstämpeln för kopieringsjobb samt metadata för filer när ADF-kopieringsaktiviteter läser dem från källarkivet. Med den här metoden kan du bekräfta om filerna har uppdaterats av andra program i källarkivet efter att ha kopierats av ADF.

Konfiguration med Azure Data Factory Studio

Om du vill konfigurera aktiviteten Kopiera loggning lägger du först till en aktiviteten Kopiera i pipelinen och använder sedan fliken Inställningar för att konfigurera loggning och olika loggningsalternativ. Shows how to configure logging for a Copy activity in the settings tab.

Om du vill övervaka loggen senare kan du kontrollera utdata från en pipelinekörning på fliken Övervakning i ADF Studio under pipelinekörningar. Där väljer du den pipelinekörning som du vill övervaka och hovra sedan över området bredvid aktivitetsnamnet, där du hittar ikoner för länkar som visar pipelineindata, utdata (när den är klar) och annan information.

Shows how to find the output of a Copy activity in ADF Studio.

Välj utdataikonen för att se information om loggningen för jobbet och notera loggningsplatsen i det valda lagringskontot, där du kan se information om alla loggade aktiviteter.

Shows the output of a Copy activity with logging enabled.

Se nedan för information om loggutdataformatet.

Konfiguration med JSON

I följande exempel finns en JSON-definition för att aktivera sessionslogg i Kopieringsaktivitet:

"typeProperties": {
    "source": {
        "type": "BinarySource",
        "storeSettings": {
            "type": "AzureDataLakeStoreReadSettings",
            "recursive": true
        },
        "formatSettings": {
            "type": "BinaryReadSettings"
        }
    },
    "sink": {
        "type": "BinarySink",
        "storeSettings": {
            "type": "AzureBlobFSWriteSettings"
        }
    },                    
    "skipErrorFile": {
        "fileForbidden": true,
        "dataInconsistency": true
    },
    "validateDataConsistency": true,
    "logSettings": {
        "enableCopyActivityLog": true,
        "copyActivityLogSettings": {
            "logLevel": "Warning",
            "enableReliableLogging": false
        },
        "logLocationSettings": {
            "linkedServiceName": {
               "referenceName": "ADLSGen2",
               "type": "LinkedServiceReference"
            },
            "path": "sessionlog/"
        }
    }
}
Egenskap Beskrivning Tillåtna värden Obligatorisk
enableCopyActivityLog När det är inställt på sant har du möjlighet att logga kopierade filer, överhoppade filer eller överhoppade rader. Sant
False (standard)
Inga
logLevel "Info" loggar alla kopierade filer, överhoppade filer och överhoppade rader. "Varning" loggar endast överhoppade filer och överhoppade rader. Information
Varning (standard)
Inga
enableReliableLogging När det är sant kommer en aktiviteten Kopiera i tillförlitligt läge att tömma loggarna omedelbart när varje fil kopieras till målet. När du kopierar många filer med tillförlitligt loggningsläge aktiverat i aktiviteten Kopiera bör du förvänta dig att dataflödet påverkas, eftersom dubbla skrivåtgärder krävs för varje fil som kopieras. En begäran går till målarkivet och en annan till logglagringsarkivet. En aktiviteten Kopiera i bästa ansträngningsläge tömer loggar med batchar med poster inom en tidsperiod och kopieringsdataflödet påverkas mycket mindre. Loggningens fullständighet och aktualitet garanteras inte i det här läget eftersom det finns några möjligheter att den sista batchen med logghändelser inte har tömts till loggfilen när en aktiviteten Kopiera misslyckades. I det här scenariot ser du att några filer som kopierats till målet inte loggas. Sant
False (standard)
Inga
logLocationSettings En grupp med egenskaper som kan användas för att ange platsen där sessionsloggarna ska lagras. Inga
linkedServiceName Den länkade tjänsten för Azure Blob Storage eller Azure Data Lake Storage Gen2 för att lagra sessionsloggfilerna. Namnen på en AzureBlobStorage länkad tjänst eller AzureBlobFS typer, som refererar till den instans som du använder för att lagra loggfilerna. Inga
path Sökvägen till loggfilerna. Ange den sökväg som du vill lagra loggfilerna. Om du inte anger någon sökväg skapar tjänsten en container åt dig. Inga

Övervakning

Utdata från en aktiviteten Kopiera

När kopieringsaktiviteten har körts helt kan du se sökvägen till loggfiler från utdata för varje aktiviteten Kopiera köra. Du hittar loggfilerna från sökvägen: https://[your-blob-account].blob.core.windows.net/[logFilePath]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].txt. Loggfilerna som genereras har .txt-tillägget och deras data är i CSV-format.

"output": {
            "dataRead": 695,
            "dataWritten": 186,
            "filesRead": 3,  
            "filesWritten": 1, 
            "filesSkipped": 2, 
            "throughput": 297,
            "logFilePath": "myfolder/a84bf8d4-233f-4216-8cb5-45962831cd1b/",
            "dataConsistencyVerification": 
           { 
                "VerificationResult": "Verified", 
                "InconsistentData": "Skipped" 
           } 
        }

Anteckning

När egenskapen enableCopyActivityLog är inställd på Enabledgenereras loggfilnamnen system.

Schemat för loggfilen

I följande tabell visas schemat för en loggfil.

Kolumn Beskrivning
Timestamp Tidsstämpeln när ADF läser, skriver eller hoppar över objektet.
Nivå Loggnivån för det här objektet. Det kan vara "Varning" eller "Info".
OperationName ADF aktiviteten Kopiera driftsbeteende för varje objekt. Det kan vara "FileRead", FileWrite, FileSkip eller TabularRowSkip.
OperationItem Filnamnen eller de överhoppade raderna.
Meddelande Mer information som visar om filen har lästs från källarkivet eller skrivits till målarkivet. Det kan också vara anledningen till att filen eller raderna hoppas över.

Här är ett exempel på en loggfil:

Timestamp, Level, OperationName, OperationItem, Message
2020-10-19 08:39:13.6688152,Info,FileRead,"sample1.csv","Start to read file: {""Path"":""sample1.csv"",""ItemType"":""File"",""Size"":104857620,""LastModified"":""2020-10-19T08:22:31Z"",""ETag"":""\""0x8D874081F80C01A\"""",""ContentMD5"":""dGKVP8BVIy6AoTtKnt+aYQ=="",""ObjectName"":null}"
2020-10-19 08:39:56.3190846, Warning, FileSkip, "sample1.csv", "File is skipped after read 548000000 bytes: ErrorCode=DataConsistencySourceDataChanged,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Source file 'sample1.csv' is changed by other clients during the copy activity run.,Source=,'." 
2020-10-19 08:40:13.6688152,Info,FileRead,"sample2.csv","Start to read file: {""Path"":""sample2.csv"",""ItemType"":""File"",""Size"":104857620,""LastModified"":""2020-10-19T08:22:31Z"",""ETag"":""\""0x8D874081F80C01A\"""",""ContentMD5"":""dGKVP8BVIy6AoTtKnt+aYQ=="",""ObjectName"":null}"
2020-10-19 08:40:13.9003981,Info,FileWrite,"sample2.csv","Start to write file from source file: sample2.csv."
2020-10-19 08:45:17.6508407,Info,FileRead,"sample2.csv","Complete reading file successfully. "
2020-10-19 08:45:28.7390083,Info,FileWrite,"sample2.csv","Complete writing file from source file: sample2.csv. File is successfully copied."

I loggfilen ovan kan du se sample1.csv har hoppats över eftersom den inte kunde verifieras vara konsekvent mellan käll- och målarkivet. Du kan få mer information om varför sample1.csv blir inkonsekvent beror på att det ändrades av andra program när ADF-aktiviteten Kopiera kopieras samtidigt. Du kan också se sample2.csv har kopierats från källa till målarkiv.

Du kan använda flera analysmotorer för att ytterligare analysera loggfilerna. Det finns några exempel nedan för att använda SQL fråga för att analysera loggfilen genom att importera csv-loggfilen till SQL databas där tabellnamnet kan vara SessionLogDemo.

  • Ge mig den kopierade fillistan.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
  • Ge mig fillistan som kopierats inom ett visst tidsintervall.
select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%'
  • Ge mig en viss fil med dess kopierade tid och metadata.
select * from SessionLogDemo where OperationItem='<file name>'
  • Ge mig en lista över filer med deras metadata kopierade inom ett tidsintervall.
select * from SessionLogDemo where OperationName='FileRead' and Message like 'Start to read%' and OperationItem in (select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%')
  • Ge mig listan över överhoppade filer.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
  • Ge mig anledningen till att en viss fil hoppades över.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
  • Ge mig listan över filer som hoppas över på grund av samma orsak: "blobfilen finns inte".
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
  • Ge mig det filnamn som kräver längst tid att kopiera.
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc

Nästa steg

Se de andra artiklarna om kopieringsaktivitet: