Skip to content

11. Troubleshooting

Dan K. Snelson edited this page Jun 17, 2022 · 1 revision

Logs

Review Nudge's logging configuration — as generated by the Nudge Post-install script — with the following Terminal command:

cat /Library/LaunchDaemons/*Nudge.logger.plist

The value of StandardOutPath is where you can find Nudge's logs. See Logging in the official Nudge Wiki for additional information.

Sample Output

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>org.churchofjesuschrist.Nudge.Logger</string>
	<key>ProgramArguments</key>
	<array>
		<string>/usr/bin/log</string>
		<string>stream</string>
		<string>--predicate</string>
		<string>subsystem == 'com.github.macadmins.Nudge'</string>
		<string>--style</string>
		<string>syslog</string>
		<string>--color</string>
		<string>none</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
	<key>StandardOutPath</key>
	<string>/var/log/org.churchofjesuschrist.log</string>
</dict>
</plist>

LaunchAgent

Review Nudge's LaunchAgent configuration — as generated by the Nudge Post-install script — with the following Terminal command:

cat /Library/LaunchAgents/*Nudge.plist

The value of file:// is where you can find the client-side JSON used by Nudge.

Sample Output

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>org.churchofjesuschrist.Nudge.plist</string>
	<key>LimitLoadToSessionType</key>
	<array>
		<string>Aqua</string>
	</array>
	<key>ProgramArguments</key>
	<array>
		<string>/Applications/Utilities/Nudge.app/Contents/MacOS/Nudge</string>
		<string>-json-url</string>
		<string>file:////Library/Preferences/org.churchofjesuschrist.Nudge.json</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
	<key>StartCalendarInterval</key>
	<array>
		<dict>
			<key>Minute</key>
			<integer>0</integer>
		</dict>
		<dict>
			<key>Minute</key>
			<integer>30</integer>
		</dict>
	</array>
</dict>
</plist>

JSON

Review Nudge's JSON configuration — as generated by the Nudge Post-install script — with the following Terminal command:

cat /Library/Preferences/*Nudge.json

See Preferences in the official Nudge Wiki for detailed information.

Sample Output

{
	"optionalFeatures": {
		"acceptableApplicationBundleIDs": [
			"us.zoom.xos"
		],
		"aggressiveUserExperience": true,
		"asyncronousSoftwareUpdate": true,
		"attemptToFetchMajorUpgrade": true,
		"enforceMinorUpdates": true
	},
	"osVersionRequirements": [
		{
		"aboutUpdateURLs": [
			{
			"_language": "en",
			"aboutUpdateURL": "https://support.apple.com/en-us/HT211896#macos1161"
			}
		],
		"majorUpgradeAppPath": "/Applications/Install macOS Big Sur.app",
		"requiredInstallationDate": "2021-11-01T23:00:00Z",
		"requiredMinimumOSVersion": "11.6.1",
		"targetedOSVersionsRule": "11"
		},
		{
		"aboutUpdateURLs": [
			{
			"_language": "en",
			"aboutUpdateURL": "https://support.apple.com/en-us/HT212585"
			}
		],
		"majorUpgradeAppPath": "/Applications/Install macOS Monterey.app",
		"requiredInstallationDate": "2021-11-22T23:00:00Z",
		"requiredMinimumOSVersion": "12.0.1",
		"targetedOSVersionsRule": "12"
		}
	],
	"userExperience": {
		"allowUserQuitDeferrals": true,
		"allowedDeferrals": 1000000,
		"allowedDeferralsUntilForcedSecondaryQuitButton": 14,
		"approachingRefreshCycle": 6000,
		"approachingWindowTime": 72,
		"elapsedRefreshCycle": 300,
		"imminentRefreshCycle": 600,
		"imminentWindowTime": 24,
		"initialRefreshCycle": 18000,
		"maxRandomDelayInSeconds": 1200,
		"noTimers": false,
		"nudgeRefreshCycle": 60,
		"randomDelay": false
	},
	"userInterface": {
		"actionButtonPath": "jamfselfservice://content?entity=policy&id=1&action=execute",
		"fallbackLanguage": "en",
		"forceFallbackLanguage": false,
		"forceScreenShotIcon": false,
		"iconDarkPath": "/path/to/darkIcon.icns",
		"iconLightPath": "/path/to/lightIcon.icns",
		"screenShotDarkPath": "/path/to/screenShotDarkPath.png",
		"screenShotLightPath": "/path/to/screenShotLightPath.png",
		"showDeferralCount": true,
		"simpleMode": false,
		"singleQuitButton": true,
		"updateElements": [
		{
			"_language": "en",
			"actionButtonText": "Update",
			"customDeferralButtonText": "Custom Date / Time",
			"informationButtonText": "View KB8675309 …",
			"mainContentHeader": "A critical macOS update is available",
			"mainContentNote": "Please save your work before continuing • Do not manually restart",
			"mainContentSubHeader": "Updates may take two hours (or longer)",
			"mainContentText": "To perform the update now, click \"Update,\" review the on-screen instructions then click \"Update Now.\" (Click screenshot below.)\n\nIf you are unable to perform this update now, click \"Defer\" (which will no longer be visible once the 2021-11-01T23:00:00Z deadline has passed).\n\nPlease see KB8675309 or contact the Help Desk.",
			"mainHeader": "Critical macOS Update Available",
			"oneDayDeferralButtonText": "24 Hours",
			"oneHourDeferralButtonText": "1 Hour",
			"primaryQuitButtonText": "Remind me later",
			"secondaryQuitButtonText": "secondaryQuitButtonText",
			"subHeader": "Please see KB8675309 or contact the Help Desk"
		}
		]
	}
}

User Deferrals

Review Nudge's User Deferrals — as generated by Nudge — with the following Terminal command:

defaults read ~/Library/Preferences/*Nudge.plist

See User Deferrals in the official Nudge Wiki for detailed information.

Sample Output

{
  "NSWindow Frame SwiftUI._ConditionalContent<SwiftUI.ModifiedContent<SwiftUI.VSplitView<SwiftUI.TupleView<(SwiftUI.ModifiedContent<Nudge.ContentView, SwiftUI._FrameLayout>, SwiftUI.ModifiedContent<Nudge.ContentView, SwiftUI._FrameLayout>)>>, SwiftUI._FrameLayout>, SwiftUI.ModifiedContent<Nudge.ContentView, SwiftUI._FrameLayout>>-1-AppWindow-1" = "390 422 900 478 0 0 1680 1025 ";
  deferRunUntil = "2021-10-28 21:30:05 +0000";
  requiredMinimumOSVersion = "12.0.2";
  userDeferrals = 2;
  userQuitDeferrals = 2;
  userSessionDeferrals = 0;
}