

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Registrazione avanzata con Amazon Braket
<a name="braket-monitor-logging"></a>

È possibile registrare l'intero processo di elaborazione delle attività utilizzando un logger. Queste tecniche di registrazione avanzate consentono di visualizzare il polling in background e di creare un record per il debug successivo.

Per utilizzare il logger, consigliamo di modificare i `poll_interval_seconds` parametri `poll_timeout_seconds` and, in modo che un'attività quantistica possa durare a lungo e lo stato dell'attività quantistica venga registrato continuamente, con i risultati salvati in un file. È possibile trasferire questo codice su uno script Python anziché su un notebook Jupyter, in modo che lo script possa essere eseguito come processo in background.

 **Configura il logger** 

Innanzitutto, configura il logger in modo che tutti i registri vengano scritti automaticamente in un file di testo, come mostrato nelle seguenti righe di esempio.

```
# import the module
import logging
from datetime import datetime

# set filename for logs
log_file = 'device_logs-'+datetime.strftime(datetime.now(), '%Y%m%d%H%M%S')+'.txt'
print('Task info will be logged in:', log_file)

# create new logger object
logger = logging.getLogger("newLogger")

# configure to log to file device_logs.txt in the appending mode
logger.addHandler(logging.FileHandler(filename=log_file, mode='a'))

# add to file all log messages with level DEBUG or above
logger.setLevel(logging.DEBUG)
```

```
Task info will be logged in: device_logs-20200803203309.txt
```

 **Crea ed esegui il circuito** 

Ora puoi creare un circuito, inviarlo a un dispositivo per farlo funzionare e vedere cosa succede, come mostrato in questo esempio.

```
# define circuit
circ_log = Circuit().rx(0, 0.15).ry(1, 0.2).rz(2, 0.25).h(3).cnot(control=0, target=2).zz(1, 3, 0.15).x(4)
print(circ_log)
# define backend
device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1")
# define what info to log
logger.info(
    device.run(circ_log, s3_location,
               poll_timeout_seconds=1200, poll_interval_seconds=0.25, logger=logger, shots=1000)
    .result().measurement_counts
)
```

 **Controllate il file di registro** 

Puoi controllare cosa è scritto nel file inserendo il seguente comando.

```
# print logs
! cat {log_file}
```

```
Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: start polling for completion
Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status CREATED
Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status CREATED
Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status QUEUED
Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status RUNNING
Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status RUNNING
Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status COMPLETED
Counter({'00001': 493, '00011': 493, '01001': 5, '10111': 4, '01011': 3, '10101': 2})
```

 **Ottieni l'ARN dal file di registro** 

Dall'output del file di registro restituito, come mostrato nell'esempio precedente, è possibile ottenere le informazioni ARN. Con l'ID ARN, è possibile recuperare il risultato dell'attività quantistica completata.

```
# parse log file for arn
with open(log_file) as openfile:
    for line in openfile:
        for part in line.split():
            if "arn:" in part:
                arn = part
                break
# remove final semicolon in logs
arn = arn[:-1]

# with this arn you can restore again task from unique arn
task_load = AwsQuantumTask(arn=arn, aws_session=AwsSession())

# get results of task
result = task_load.result()
```