Dahl var sønn av en auditør. Selv ble han offiser i 1854, var premierløytnant fra 1857. Senere ble han i 1867 kaptein i 1. akershusiske brigade og fra 1883 oberstløytnant i bergenske brigade. Han ble utnevnt til oberst i 1889, og i 1891 overført til 2. akershusiske brigade. Han tok avskjed i 1901.